Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mała zagadka z preg_match
jacek21
post 1.03.2013, 17:02:43
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Crozin
post 1.03.2013, 17:13:04
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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?
Go to the top of the page
+Quote Post
jacek21
post 1.03.2013, 17:41:42
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 13.06.2012

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


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
Go to the top of the page
+Quote Post
redeemer
post 1.03.2013, 18:04:47
Post #4





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


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.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:26