Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mała zagadka z preg_match
Forum PHP.pl > Forum > PHP
jacek21
Mam taki problem, pobieram sobie jakąś strone CURL'em i przeszukuje w poszukiwaniu pewnej wartości, lecz preg zwraca pustą tablicę, poniżej kawałek kodu:

  1. [..]
  2. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  3. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //zeby uprzedzic wasze pytanie co do zwracania
  4. [..]
  5. $str = curl_exec($curl);
  6. preg_match('#<input type="hidden" value="(.*?)" name="sid">#i',$str, $result);
  7. print_r($result);


i kawałek kodu źródłowego forum:
  1. <input type="hidden" value="0" name="post_parent">
  2. <input type="hidden" value="f519dade14c2005bb7368f66571afc14" name="sid">
  3. <input type="hidden" value="2" name="f">


Sprawdzałem smaego preg'a w 'roboczym' dokumencie dokładnie z w/w inputem(2linia) i działał bez zarzutów, lecz, gdy przyjdzie zmierzyć mu się z stroną pobraną przez curl'a nic nie znajduje..

Sam już nie wiem dlaczego, curl wyświetla poprawnie strone niby wszystko dobrze, ale preg nic nie znajduje ;\
Musze się dowiedzieć czemu bo już spać nie idzie biggrin.gif
Crozin
1. Upewnij się, że zmienna $str zawiera poprawny kod HTML.
2. Nie wiem ile razy jeszcze trzeba będzie się powtarzać, ale wyrażenia regularne bardzo słabo spisują się w przetwarzaniu HTML-a. Dlaczego nie skorzystasz z normalnego narzędzia typu DOM czy phpQuery?
jacek21
Cytat(Crozin @ 1.03.2013, 17:13:04 ) *
1. Upewnij się, że zmienna $str zawiera poprawny kod HTML.
2. Nie wiem ile razy jeszcze trzeba będzie się powtarzać, ale wyrażenia regularne bardzo słabo spisują się w przetwarzaniu HTML-a. Dlaczego nie skorzystasz z normalnego narzędzia typu DOM czy phpQuery?


kod HTML jest poprawny(z tego co patrzyłem) smile.gif
Co do DOM, to natknąłem się na to zagadnienie ostatnio(chyba wczoraj), ale nie miałem za dużo czasu, żeby się zagłębić w ten temat. Co do powtarzania to php jest bardzo bogatym językiem w przeróżne funckje etc i nie łatwo wszędzie zajrzeć, ale jeżeli moje pytanie/niewiedza Cię uraziła to przepraszam. A co do pytania dlaczego nie skorzystam no bo tak na poważnie pierwsze słysze o tych narzedziach :|
Nie uczyłem/uczę się php w ten sposób, że przelecę od a do z manuala bo wiem, że i tak mało mi to da, poznaje naowe zagadnienia podczas pracy nad czymś itp i pewnie z krótkiego stażu wynika moja niewiedza :|

Jednak dziękuje za odpowiedź, na pewno postaram się zapoznać się z DOM czy też PHPQUERY(To w ogóle pierwszy raz na oczy widzę :|).
Ale gdyby ktoś miał jakiś pomysł dlaczego mój preg nie chce znaleźć mi wartości, na pewno posłucham smile.gif
redeemer
Cytat(jacek21 @ 1.03.2013, 17:41:42 ) *
...
Ale gdyby ktoś miał jakiś pomysł dlaczego mój preg nie chce znaleźć mi wartości, na pewno posłucham smile.gif
Ciężko powiedzieć, bez danych które parsujesz. Może np. zamiast spacji "w środku" inputa są tam tabulatory? (w takim wypadku taki pattern #<input.+type="hidden".+value="(.*?)".+name="sid"># powinien pomóc) Warto się także zastanowić nad modyfikatorem s, ale jak już wspomniał @Crozin są inne narzędzia do tego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.