ďťż

[php] Wyrażenia regularne i \n Problem ze znakiem nowej linii

       

Podstrony


telcocafe

edit: Problem rozwiązany :* podziękowania dla Coldpeera :* (wyjaśnienie w ostatnim poście)

Trzymam w zmiennej stronę, z której wyciągam informację. Gdy pobieram je z danej linijki pliku, ciąg "(.*?)" spisuje się prawidłowo. Jednak nie mam pojęcia, jakiej matrycy użyć, by brane pod uwagę były znaki nowej linii (\n oraz \r\n) oraz tabulatory (\t).
Kombinowałem na różne sposoby i nic :kwasny: a wszelkie znalezione rozwiązania na podobne kłopoty nie funkcjonowały poprawnie :kwasny:

Oto ciąg, na którym wyrażenie się haczy i zwraca pustą tablicę (uwidoczniłem ręcznie białe znaki):(...) <br><b>tekst</b></td>#13#09#09#09#09#09#09#09#20#20#20#20#20#20#20#20#20< td><div><b>tekst2</b></div></td> (...)Przypomnę: #13 - \n - znak nowej linii; #09 - \t - tabulator; #20 - spacja.

A w ten sposób próbowałem:preg_match('/<b>(.*?)<\/b>(.*?)< div><b>(.*?)<\/b><\/div>/', $tekst, $tablica);
Pomożecie :> ?

PS Dopiero dzisiaj zacząłem "zabawę" z wyrażeniami regularnymi, więc jeśli gdzieś popełniłem duży błąd, nie bijcie :P
Użytkownik DJ_ProG edytował ten post 28 lipiec 2007, 13:58



. określa dowolny znak z wyjątkiem znaku nowego wiersza
Użyj \n i \t w wyrażeniu.
Użytkownik andrzej_aa edytował ten post 27 lipiec 2007, 21:09
Kombinowałem różnie...
Lepiej podaj przykład zastosowania, bo moja wyobraźnia wstawiania tych znaków już się skończyła.

I prosiłbym o sprawdzone metody.

http://www.gajdaw.pl/php/wyrreg.html[ \t\n\r] badz \s
http://osteele.com/tools/rework/ do testowania wyrażen
Użytkownik polasek edytował ten post 27 lipiec 2007, 22:43


ja tam z zasady daje str_replace z tablica bialych znakow :) tzn \r \n \t :) dziala dobrze :) z tego co wiem to w RegExpach jest przelacznik ignorujacy nowa linie :)


http://www.gajdaw.pl/php/wyrreg.html[ \t\n\r] badz \s
http://osteele.com/tools/rework/ do testowania wyrażen
Stron z opisami widziałem już tysiące, ale nigdzie nie ma konkretnego działu dotyczącego mojego problemu - AFAIR było tylko na stronach Mozilli, ale i tak nic to nie pomogło. A co do znaków, to sam również je znam :P Lepiej powiedz mi, jak mam je wstawić do mojej matrycy, by chodziło. Bo moje próby nawet w tym parserze online, do którego link podałeś kończą się fiaskiem.


ja tam z zasady daje str_replace z tablica bialych znakow :) tzn \r \n \t :) dziala dobrze :) z tego co wiem to w RegExpach jest przelacznik ignorujacy nowa linie :) Wszystko pięknie ładnie, ale biorąc pod uwagę wagę strony przetwarzanej przeze mnie - ~200kb (!), to taka operacja nie będzie najszybsza, i będę musiał czekać dwukrotnie - na str_replace() i na preg_match(). A tak to by się załatwiło za jednym razem, i zawsze o 50% szybciej ;)
A przełącznik może i jest, ale nie mam pojęcia jak się je stosuje :kwasny:

Problem został rozwiązany - podziękowania kieruję do Coldpeera :)
A chodzi o to, by na samym końcu dodać owy przełącznik, w postaci litery "s". Czyli:
/<b>(.*?)<\/b>(.*?)<div><b>(.*?)<\/b> <\/div>/s
Użytkownik DJ_ProG edytował ten post 28 lipiec 2007, 14:02
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.