Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_replace ?
truvati
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 7.01.2006

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


Witam
mam oto takie coś:

  1. <?php
  2. $str="[tag] wazne [/tag] bzdura bzdura";
  3.  
  4. $str = preg_replace("#[tag](.*?)[/tag]#si", '<b>1</b>', $str);
  5. ?>


po wywyołaniu wyżej wymienionej funkcji otrzymuje:
"test bzdura bzdura"

natomaist po:
  1. <?php
  2. $str = preg_replace("#[tag](.*?)[/tag]#si", '<b>2</b>', $str);
  3. ?>

otrzymam:
"bzdura bzdura"


jakoś z preg_* i inyymi funkacjami do zamiany nie moge sobie poradzić, jak najprościej wczytać to co jest pomiędzy znaczkami [tag] [/tag] do okreslonej zmiennej ?

pozdrawiam
Truvati

Ten post edytował truvati 22.06.2006, 13:36:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Mhh bendi bardzo dobrze (od ciebie umiem wyrażenia http://bedkowski.pl). Ale wydaje mi się że chcaił wyciąć wszystkie tagi ^^

  1. <?
  2. $str="[tag] wazne [/tag] bzdura bzdura [tag1]lala[/tag1]";
  3.  
  4. $aMatches = array();
  5.  
  6. $str = preg_replace("#[(.*)](.*?)[/(?:.*)]#sie", '$aMatches["1"] = trim( "2" );', $str);
  7.  
  8. print_r( $aMatches );
  9. ?>

Powinno być:
array(
"tag" => 'wazne' ,
"tag1" => 'lala'
)

PS> Co daje ? po (.*
Go to the top of the page
+Quote Post
bendi
post
Post #3





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


Cytat(bim2 @ 23.06.2006, 11:27 ) *
Mhh bendi bardzo dobrze (od ciebie umiem wyrażenia http://bedkowski.pl).

Cieszę się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat(bim2 @ 23.06.2006, 11:27 ) *
Ale wydaje mi się że chcaił wyciąć wszystkie tagi ^^

Pewnie tak, ale tego nie napisał, a ja się ostatnio bardzo rozleniwiłem i jakoś szklana kula nie chce działać (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Jeżeli faktycznie tak jest to tam się nalezy jescze mała poprawka. Otóż skrypt w twojej wersji nie daje gwarancji, że szukane tagi będą sobie odpowiadać nawzajem, więc tak na czuja zmieniłbym to na:

  1. <?
  2. $str="[tag] wazne [/tag] bzdura bzdura [tag1]lala[/tag1]";
  3.  
  4. $aMatches = array();
  5.  
  6. $str = preg_replace("#[(.*)](.*?)[/1]#sie", '$aMatches["1"] = trim( "2" );', $str);
  7.  
  8. print_r( $aMatches );
  9. ?>


Dzięki czemu tag zamykający i otwierający będą do siebie pasować

Cytat(bim2 @ 23.06.2006, 11:27 ) *
PS> Co daje ? po (.*

Pisałem o ungreedy-dot - jak czytałeś mój kurs to w drugiej części jest przykład z komentarzami w stylu C (zaraz na samym początku). Ew można poszukać na http://www.regular-expressions.info/
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 12:34