Skocz do zawartości

preg_match_all


yellow

Rekomendowane odpowiedzi

Witajcie mam problem z ktorym niestety sobie nie poradze bez pomocy bardziej doswiadczonych. Otoz potrzebuje wykorzystac funkcje preg_match_all i mam problem z ulozeniem warunku, kompletnego warunku bo jego fragment udalo sie metoda prob i blędów ułożyć

 $test = file_get_contents("https://www.strona.pl/?parametr=wartosc");

fragmentz pobieranej strony ktory mnie interesuje wyglada tak:

<tr bgcolor="#f1e0c6"><td>Profession:</td><td>Elder Druid</td></tr>

 preg_match_all('#Profession:</[^>]+><[^>]+>(.................)#', $test, $a);
print_r ($a);

otrzymuje wówczas

Array
(
[0] => Array
	(
		[0] => Profession:</TD><TD>Elder Druid</TD><
	)

[1] => Array
	(
		[0] => Elder Druid</TD><
	)

)

gdzie niepotrzebny mi jest fragment

</td><

probowałem analogicznie użyc takiej instrukcji

 preg_match_all('#Profession:</[^>]+><[^>]+>(.................)</[^>]+></[^>]+>#', $test, $a);

ale d.upa, nie działa wcale wówczas

dodam ze pobierany fragment zawsze bedzie mial format

<tr bgcolor="#f1e0c6"><td>Profession</td><td>$wartosc</td></tr>

gdzie $wartosc bedzie miala rozna ilosc znaków, czy ktoś doświadoczny mógłby mi pomóc z ułożeniem właściwej formuły?

edit: dodanie ":"

Blog Technologii WWW: DailyWeb.pl

Odnośnik do komentarza
Udostępnij na innych stronach

1) .* - zbyt ogólna

2) <[^<>]*><[^<>]*>.*?<[^<>]*><[^<>]*>.*?<[^<>]*><[^<>]*> - zbyt ogólna

3) <tr[^<>]*><td>.*?<\/td><td>.*?<\/td><\/tr> - zbyt ogólna?

4) <tr[^<>]*><td>Profession<\/td><td>.*?<\/td><\/tr> - chyba dobra?

+ https://gajdaw.pl/php/wyrazenia-regularne-p...torial/p19.html

;)

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

1) .* - zbyt ogólna

2) <[^<>]*><[^<>]*>.*?<[^<>]*><[^<>]*>.*?<[^<>]*><[^<>]*> - zbyt ogólna

3) <tr[^<>]*><td>.*?<\/td><td>.*?<\/td><\/tr> - zbyt ogólna?

4) <tr[^<>]*><td>Profession<\/td><td>.*?<\/td><\/tr> - chyba dobra?

+ https://gajdaw.pl/php/wyrazenia-regularne-p...torial/p19.html

;)

Array ( [0] => Array ( ) )

:P

 preg_match_all('#<tr[^<>]*><td>Profession:<\/td><td>.*?<\/td><\/tr>#', $test, $a);

w miejscu .*? moga pojawic sie dwa wyrazy, czy to mzoe meic znaczenie?

bede musial sie wziac za te wyrazenia regularne, chyba ze trotyl mmasz pomysl ejszcze jakis ;)

Blog Technologii WWW: DailyWeb.pl

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności