Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem call_user_function z preg_match_all
Forum PHP.pl > Forum > PHP
mimol
Witam, chciałbym zamiast :
  1. $pattern = '/countryIds=([0-9]+)/is';
  2. $data = '<li><a href="/search/film?countryIds=53">USA</a></li><li><a href="/search/film?countryIds=59">Wielka Brytania</a></li>';
  3. preg_match_all($pattern, $data , $matches);
  4. $matches = $matches[1];
  5. var_dump($matches);

Użyć to w taki sposób
  1. $pattern = '/countryIds=([0-9]+)/is';
  2. $data = '<li><a href="/search/film?countryIds=53">USA</a></li><li><a href="/search/film?countryIds=59">Wielka Brytania</a></li>';
  3. call_user_func('preg_match_all',$pattern, $data, $matches);


Niestety dostaje Parameter 3 to preg_match_all() expected to be a reference. Czy jest sposób, żeby sobie z tym poradzić.
Wymagam, żeby wszystko odbywało się poprzez call_user_func

Ewentualnie jak uzyskać Country ID z
Kod
<tr><th>produkcja:</th><td><ul class="inline sep-comma"><li><a href="/search/film?countryIds=53">USA</a></li><li><a href="/search/film?countryIds=59">Wielka Brytania</a></li></ul></td></tr>

Pobieranie wyszstkiego pomiędzy <ul>
Kod
<tr><th>produkcja:<\/th><td><ul class="inline sep-comma">(.*?)<\/ul><\/td><\/tr>

Pobieranie ID pomiędzy <li>
Kod
countryIds=([0-9]+)

Jak to połączyć w jednego regexpa??
zegarek84
Cytat(mimol @ 16.02.2013, 14:28:18 ) *
Niestety dostaje Parameter 3 to preg_match_all() expected to be a reference. Czy jest sposób, żeby sobie z tym poradzić.

tak - zrobić to co należy i czytać błędy ze zrozumieniem ]:->
  1. $pattern = '/countryIds=([0-9]+)/is';
  2. $data = '<li><a href="/search/film?countryIds=53">USA</a></li><li><a href="/search/film?countryIds=59">Wielka Brytania</a></li>';
  3. $matches = array();
  4. call_user_func('preg_match_all',$pattern, $data, &$matches);
  5. var_dump($matches);

ps. PHP o tyle jest "dziwne", że nawet jak nie zdefiniujesz zmiennej (zakomentuj "$matches = array();") to podając referencję do niezdefiniowanej zmiennej kod się wykona...

ps. wygodniej parsuje się strony przy zastosowaniu modelu DOM... w czystym PHP masz też do niego dostęp Document Object Model a jeśli chcesz korzystać z selektorów css na wzór jQuery to są biblioteki typu PHPQuery (inne poszukaj sobie w google)... a jeśli potrzebujesz przetworzone strony po JS lub z jakiegoś innego powodu chciałbyś mieć efekt tak jakbyś zarządzał przeglądarką w programie to polecam Qt WebKit (ale to już C++ i biblioteka Qt - całkiem przyjemna...)... no i różne rozwiązania na zasadzie pluginów do przeglądarek które możesz pisać w JS (zresztą w Qt też można pisać w JS podobnie jak i aplikacje na Win7)
mimol
Tak, z pewnością jeśli musiałbym pisać swoją klasę wykorzystałbym DOM, jednak znalazłem klasę która już 80% wykonuje to co potrzebuje (niestety na nieszczęsnych regexpach)
Z tego co pamiętam to próbowałem zrobić coś podobnego, ale wtedy dostawałem errora, że trzeci parametr nie może być referencją.... Jak widać musiałem coś poplątać
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.