Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Preg_match_all, pytanie o wzorzec
alpin
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 1
Dołączył: 15.03.2004

Ostrzeżenie: (10%)
X----


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...

Ten post edytował alpin 16.10.2013, 23:14:54
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


ten wynik to jest to co uzyskałeś czy chcesz uzyskać?
Go to the top of the page
+Quote Post
qdlaty88
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 2
Dołączył: 11.09.2013

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


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?

Ten post edytował qdlaty88 16.10.2013, 23:41:46
Go to the top of the page
+Quote Post
alpin
post
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 1
Dołączył: 15.03.2004

Ostrzeżenie: (10%)
X----


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 ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:43