Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenie regularne i problem ze zwracaniem wyniku, działa zbyt szeroko
mefistofeles
post
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Próbuje za pomocą wyrażenia wyciągnąć ostatnia liczbę z tego ciągu:

  1. "><b></a>&nbsp<a href="/search.php?page=3&find=polska"><b>3<b></a>&nbsp<a href="/search.php?page=4&find=polska"><b>4<b></a>&nbsp<a href="/search.php?page=5&find=polska"><b>5<b></a>&nbsp<a href="/search.php?page=6&find=polska"><b>6<b></a>&nbsp<a href="/search.php?page=7&find=polska"><b>7<b></a>&nbsp<a href="/search.php?page=8&find=polska"><b>8<b></a>&nbsp<a href="/search.php?page=9&find=polska"><b>9<b></a>&nbsp<a href="/search.php?page=10&find=polska"><b>10<b></a>&nbsp<a href="/search.php?page=11&find=polska"><b>11<b></a>&nbsp<a href="/search.php?page=12&find=polska"><b>12<b></a>&nbsp<a href="/search.php?page=13&find=polska"><b>13<b></a>&nbsp<a href="/search.php?page=14&find=polska"><b>14<b></a>&nbsp<a href="/search.php?page=15&find=polska"><b>15<b></a>&nbsp<a href="/search.php?page=16&find=polska"><b>16<b></a>&nbsp<a href="/search.php?page=17&find=polska"><b>17<b></a>&nbsp<a href="/search.php?page=18&find=polska"><b>18<b></a>&nbsp<a href="/search.php?page=19&find=polska"><b>19<b></a>&nbsp<td align=right width=1% nowrap>


Napisałem taki kodzik:

  1. $pagecntreg = '/"><b>(.+?)<b><\/a>&nbsp<td align=right/i';
  2. preg_match_all($pagecntreg, $nazwa, $pagecnt);
  3. //$pagecnt = $pagecnt[0][1];
  4. print_r($pagecnt);


Niestety to wyrażenie zamiast zwrocic tylko ostatnia czesc tego ciagu pasujaca do wzorca
("><b>19<b></a>&nbsp<td align=right) a konkretnie liczbę 19
zwraca całość.

Niby ma to sens bo to jakby też pasuje do tego wzorca, ale na pewno można ustawić jakąś flagę
lub coś w tym stylu żeby zwracało tylko ostatnio wynik pasujący do wzorca czyli tą część z 19.

Mam nadzieje, że wiecie o co mi chodzi ?

Po prostu chcę wyciągnąć tylko tą liczbę ostatnią (19)

Ten post edytował mefistofeles 21.05.2010, 05:55:01
Go to the top of the page
+Quote Post
croc
post
Post #2





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Bo wyrażenia regularne są zachłanne, a ty masz błąd w postaci <b>liczba<b>. Zamienisz na <b>liczba</b> i aktualizujesz wzór to będzie ok.
Go to the top of the page
+Quote Post
mefistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Ale ja to ciągnę z zewnątrz i nie mam możliwości poprawienia tego <b>, zresztą co to zmienia ?
Skoro są zachłanne to jak zrobić, żeby nie były?
Chodzi mi tylko o wyciągnięcie ostatniej liczby z tamtego kodu.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro tam maj byc liczby to bierz liczby a nie co popadnie. A potem sie dziwisz...

$pagecntreg = '/"><b>\d+<b><\/a>&nbsp<td align=right/i';


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mefistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

Ostrzeżenie: (10%)
X----


Rzeczywiście, nie pomyślałem o tym.
Dziękuje za pomoc.
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 Aktualny czas: 21.08.2025 - 08:18