Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem call_user_function z preg_match_all, lub łączenie dwóch preg_match'y
mimol
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

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


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??

Ten post edytował mimol 16.02.2013, 14:38:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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)
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: 29.12.2025 - 14:59