Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match_all wyłuskanie danych z jednego ciągu
Forum PHP.pl > Forum > PHP
mgebala8
zależy mi na uzyskaniu tablicy subtitle z podanego ciągu:

  1. $string="[subtitle]subtitle1[/subtitle]hgghjghj[subtitle]subtitle2[/subtitle]ghjghjghj[subtitle]subtitle3[/subtitle]";
  2.  
  3. $tag_model = "/\[subtitle\]([\S]+)\[\/subtitle\]/";
  4.  
  5. preg_match_all($tag_model, $view, $matches);
  6.  
  7. foreach($matches[1] as $module)
  8. {
  9. echo $module."<hr>";
  10. }


jeśli między subtitle są entery wszystko jest ok , jeśli jednak mam pojedyńczy string dostaje tylko jeden rekord który zawiera "subtitle1[/subtitle]hgghjghj[subtitle]subtitle2[/subtitle]ghjghjghj[subtitle]subtitle3[/subtitle]" macie jakiś pomysł jak to można naprawić ?
Pyton_000
Kod
"/\[subtitle\]([\S]+?)\[\/subtitle\]/"
mgebala8
witaj, dzięki wielkie działa ! wink.gif pytanie tylko dlaczego ?
by_ikar
Dlatego że twoja wersja wyrażenia jest "zachłanna" i łapie wszystko co nie jest białym znakiem. Dodanie znaku zapytania sprawia że takie wyrażenie jest "leniwe". Więc zamiast wszystkich nie białych znaków powinieneś szukać wszystkiego co nie jest np "[". No ale można to rozwiązać też tak.
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.