Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Regex i wykluczenia.
Kużdo
post 7.11.2011, 00:20:29
Post #1





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Witam.

Mam problem ze swoim regexem, ponieważ potrzebuję przelecieć nim przez stronę która zawiera takie same fragmenty po kilkanaście razy, ale regex łapie za duże obszary. Powiedzmy, że na stronie jest taki kod:
  1. <div class="wazna">
  2. <div class="tytul">Tytul fragmentu</div>
  3. <div class="szczegoly">
  4. <div class="szczegol1">Bleble</div>
  5. <a href="yyy" class="szczegol2">yyy</a>
  6. <span class="szczegol3">Sczegol trzeci</span>
  7. </div>
  8. <div class="clear"></div>
  9. </div>


Mój regex początkowo wyglądał tak:
  1. $match = preg_match_all('#<div class="wazna">(.*)</div>#', $content, $array);


ale szybko zauważyłem, że jeśli takich divów o ważnej klasie występuję więcej to regex łapię większy fragment ich jako jeden element. Np:
  1. <div class="wazna">...</div><div class="wazna">...</div><div class="wazna">...</div>


No więc próbowałem z wykluczaniem elementów ([^"wazna"]*) itp. ale nic nie działa... Jak łatwo wyłapać każdy taki ważny blok osobno?

Pozdrawiam.
Go to the top of the page
+Quote Post
Bags_Bunny
post 7.11.2011, 00:33:37
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Jeśli wystarczy Ci do pierwszego </div> to dodaj '?' po '*' w Twoim wyrażeniu. Jeśli nie, to czytaj tutaj: http://uk3.php.net/manual/en/regexp.reference.assertions.php

De facto możesz nawet wrzucić to clear gdzieś do wyrażenia. W każdym badź razie, '?' sprawi, że wyrażenie będzie znajdzie tak mało, jak będzie w stanie.

Ten post edytował Bags_Bunny 7.11.2011, 00:34:55


--------------------
rm -rf /*
Go to the top of the page
+Quote Post
Kużdo
post 7.11.2011, 03:32:14
Post #3





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Super! Zmieniając tak jak napisałeś z (.*) na (.*?) działa tak jak powinno! Wielkie dzięki!
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.03.2024 - 01:24