Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]przenoszenie PATH z jednej części linii kodu do innej
qpanas
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 2
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Mam problem, z którym borykam się od kilku dni. Mam kilka plików z dziesiątkami tysięcy linii do przerobienia. To pytania i odpowiedzi dla Mnemosyne - kurs angielskiego, który sobie wyeksportowałem z oryginalnego Supermemo (legalnej kopii - po prostu skończyłem z Windowsem a pod Linuksem nie dało się używać z oczywistych względów). Format danych w każdej linii jest identyczny i wygląda tak

Cytat
jakiś_tekstTABjakiś_inny_tekst<br><sound src="PATH">


Mnemosyne odczytuje pojedynczą linię i wyświetla ją sformatowaną na podstawie występowania tabulatora. Część, która jest przed tabem jest wyświetlana w jednym oknie, a część po tabie w drugim pod naciśnięciu klawisza "pokaż odpowiedź" i dodatkowo odtwarza się plik dźwiękowy, do którego ścieżka jest po znaczniku <br>
Niestety okazuje się, że muszę przenieść wszystkie ścieżki na lewą stronę tabulatora. Niby prosta operacja w edytorze tekstu CTR-A, CTR-X, CTR-V. Tylko przy ponad dwustu tysiącach linii robiłbym to z rok, albo i dłużej. Chciałem wyprodukować jakiś skrypt albo znaleźć komendę pod konsolą linuksową, która by to z automatu zrobiła. Ale poległem. Próby z sed nie przyniosły skutku (potrafię tylko kilka bardzo prostych rzeczy z jego pomocą zrobić) a programistą nie jestem. Czy wie ktoś jak się do tego zabrać? Będę wdzięczny za każdą pomoc.

Ten post edytował qpanas 15.07.2009, 21:41:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kipero
post
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 50
Dołączył: 28.10.2006
Skąd: Radom

Ostrzeżenie: (0%)
-----


To znaczy jak ma to wyglądać?
Kod
jakiś_tekst<br><sound src="PATH">TABjakiś_inny_tekst

Z wyrażeniami regularnymi się można pobawić, tylko nie wiem czy jest sens używać do tego PHP - może wystarczy tylko edytor tekstu, który takie rzeczy obsługuje.
Ja spróbowałbym tak:
  1. <?php
  2. $txt = 'jakiś_tekst    jakiś_inny_tekst<br><sound src="PATH">';
  3. $txt = preg_replace('#([^\t]+)\t([^<]+)<br>(.*)#i', "$1<br>$3\t$2", $txt);
  4. echo $txt;
  5. ?>

To tylko przykład, ale można go użyć do tego co chcesz wykonać. Nie mniej jednak może się lekko wykrzaczyć przy 200k rekordów.

Ten post edytował kipero 15.07.2009, 21:15:25
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 21:10