Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Regex i wykluczenia.
Forum PHP.pl > Forum > PHP
Kużdo
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.
Bags_Bunny
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.
Kużdo
Super! Zmieniając tak jak napisałeś z (.*) na (.*?) działa tak jak powinno! Wielkie dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.