Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> preg_match - jak wyszukać najkrótszy pasujący ciąg
Tibod
post 12.06.2007, 19:38:50
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 2
Dołączył: 9.05.2007
Skąd: INTERNET

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


Fragment skryptu:

  1. <?php
  2. $tresc='<p>bla bla<p> bla bla bla<p class=temat">Temat strony</p>dalsze bla bla bla</p> cos tam bla bla</p>';
  3. $wyrazenie='#<p class=pagetitle>(.*)</p>#';
  4. preg_match($wyrazenie, $tresc, $nazwa);
  5.  
  6. echo $nazwa[1];
  7. ?>


w odpowiedzi dostaje:
Kod
Temat strony

dalsze bla bla bla

cos tam bla bla


a wolałbym jednak samo
Kod
Temat strony



Ma ktoś pomysł jak to ugryźć. Jak nakazać funkcji wyszukiwać najkrótszy możliwy ciąg.


--------------------
"There are only 10 types of people in the world: Those who understand binary, and those who don't"
Go to the top of the page
+Quote Post
JaRoPHP
post 12.06.2007, 21:15:58
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


Wyrażenia regularne są "zachłanne" - jak zauważyłeś.
Osobiście zrezygnowałbym ze znaku ".", jako dopasuj cokolwiek, a zrobił ograniczenie, tak, aby już nie brał znaku "<".

  1. <?php
  2. $wyrazenie='#<p class=pagetitle>([a-zęóąśłżźćń ]+)#i';
  3. ?>


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
zimi
post 12.06.2007, 23:37:24
Post #3





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


  1. <?
  2. $wyrazenie='#<p class=pagetitle>(.*?)</p>#';
  3. ?>

i na moje oko będzie ok

EDIT trochę nabałaganiłeś w swoim poście więc podam to w teorii, po znaku + bądź * dodajesz ? i regularki przestają być zachłanne...

Ten post edytował zimi 12.06.2007, 23:41:26
Go to the top of the page
+Quote Post
Tibod
post 13.06.2007, 08:17:57
Post #4





Grupa: Zarejestrowani
Postów: 108
Pomógł: 2
Dołączył: 9.05.2007
Skąd: INTERNET

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


Dzięki. Działa super.


--------------------
"There are only 10 types of people in the world: Those who understand binary, and those who don't"
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: 29.06.2025 - 00:15