Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Preg_match_all, pytanie o wzorzec
Forum PHP.pl > Forum > Przedszkole
alpin
Witam, mam problem z którym walczę i nie mogę sobie poradzić. Może przejdę do rzeczy, myślę że najłatwiej będzie zrozumieć na prostym przykładzie.
  1. <?
  2. $string=<<<EOF
  3. jakies_dane_
  4. <blok15432>
  5.   <ciag1>tresc1</ciag1>
  6.   <ciag2>tresc2</ciag2>
  7.   <ciag3>tresc3</ciag3>
  8. </blok15432>
  9. _jakies_dane_
  10. <blok>
  11.   <ciag4>tresc4</ciag4>
  12.   <ciag5>tresc5</ciag5>
  13.   <ciag6>tresc6</ciag6>
  14. </blok>
  15. _jakies_dane_
  16. <blok>
  17.   <ciag7>tresc7</ciag7>
  18.   <ciag8>tresc8</ciag8>
  19.   <ciag9>tresc9</ciag9>
  20. </blok>
  21. _jakies_dane_
  22. <blok432423>...itd
  23. EOF;
  24.  
  25. if($ile=preg_match_all('#<ciag[0-9]>([^<]+)</ciag[0-9]>#', $string, $wynik))
  26. {
  27. echo "Znaleziono $ile wyników<br>";
  28.  
  29. foreach( $wynik[ 1 ] as $klucz => $wartosc )
  30. {
  31. echo "$klucz $wartosc<br>";
  32. }
  33.  
  34. } else echo "zle wyrazenie";
  35. ?>

Wynik funkcji:
  1. Znaleziono 9 wyników
  2. 0 tresc1
  3. 1 tresc2
  4. 2 tresc3
  5. 3 tresc4
  6. 4 tresc5
  7. 5 tresc6
  8. 6 tresc7
  9. 7 tresc8
  10. 8 tresc9


I teraz moje pytanie, jak napisać wyrażenie żeby zwróciło mi tresc4,tresc5,tresc...,tresc9 czyli tylko to co jest zawarte pomiedzy <blok> i </blok>

Próbowałem na różne sposoby i ni jak mi nie wychodzi...
com
ten wynik to jest to co uzyskałeś czy chcesz uzyskać?
qdlaty88
Jeśli dobrze zrozumiałem to może najpierw za pomocą preg_match_all() wyciąć sobie kod pomiędzy znacznikami <blok></blok> i załadować do zmiennej i dopiero wtedy na niej preg_match_all() z wyrażeniem jak w podanym przykładzie?
alpin
Gdybym uzyskał to co chciałbym to po co bym tutaj pisał ? Chce uzyskac dane tylko z pomiedzy znacznikow <blok> i </blok>

Cytat(qdlaty88 @ 17.10.2013, 00:38:39 ) *
Jeśli dobrze zrozumiałem to może najpierw za pomocą preg_match() wyciąć sobie kod pomiędzy znacznikami <blok> </blok> i załadować do zmiennej i dopiero wtedy na niej preg_match_all() jak w podanym przykładzie?

A nie da sie tego w jednym wyrazeniu jakos ? Tez teraz na to wpadlem, ale gdybym sie uparl zeby na jednym, to da sie czy nie ?
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.