Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: niechciany string
Forum PHP.pl > Forum > PHP
sayWOW
Witam.

Jestem lamerem na maksa jeżeli chodzi o wyrażenia regularne i mam równie lamerski problem.
W jaki sposób wyrzucić ze stringa wszystko co się zaczyna na '{' i kończy na '}' questionmark.gif

Przykład:

Z czegoś takiego
'{testowany string} tutaj jeszcze cos innego {holapola} i {adammalysz} trutututu'

ma być coś takiego
' tutaj jeszcze cos innego i trutututu'

dzięki i pozdrawiam
crash
  1. <?php
  2. $tekst = preg_replace('#{.+}#i', '', $tekst);
  3. ?>
sayWOW
crashu dzięki bardzo tylko jest jeden problem. Co gdy w ciagu znaków znajuje sie kilka wąsów ??

Kod
$string  = '{test} tutaj jeszcze cos innego {mama} i {tata} trutututu';


Po zastosowaniu twojego kodu zostaje tylko trutututu :)
Dziękli jednak za wskazówke, to już coś, pozdr.
crash
  1. <?php
  2. echo preg_replace('#{[^{}]+}#i', '', $string);
  3. ?>
tiraeth
a ja robię to tak i działa:
  1. <?php
  2. echo preg_replace('/{(.*?)}/', '', $string);
  3. ?>
sayWOW
Pokłony dla was Panowie, dziękuję i pozdrawiam.
bendi
Cytat(Tiraeth @ 2005-02-21 12:09:49)
a ja robię to tak i działa:
  1. <?php
  2. echo preg_replace('/{(.*?)}/', '', $string);
  3. ?>

Ja tu tylko chcialem wtracic maly komentarz, bo jak zaczynalem sie zajmowac regexp'ami to spedzalo mi to sen z powiek winksmiley.jpg)

Otoz chodzi o roznice miedzy:
- .*
- .*?

W powyzszym przykladzie bylo widac co sie dzieje, mianowicie jezeli mamy ciag zaczynajacy sie od jakiegos elementu i konczacy tym elementem to pierwszy sposob pobiera wszystkie znaki spomiedzy chodzby nawet znak/ciag zamykajacy pojawil sie wczesniej to wyrazenie regularne "leci" do ostatniego wystepujacego w stringu. Drugi sposob natomiast konczy prace po napotkanym juz pierwszym znaku/ciagu konczacym i o to zazwyczaj nam chodzi.

Jest to generalna regula w wyrazeniach.

Pierwszy sposob jest nazwany z ang. greedy czyli chciwy, mysle ze dosc trafnie
Drugi sposob zostal ochrzszczony jako non-greedy czyli niechciwy smile.gif) a po polsku moznaby to okreslic jako oszczedny.

To tak dla usystematyzowania wiedzy.

( wiecej: 1 2 3 )
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.