Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> niechciany string
sayWOW
post 18.02.2005, 13:34:32
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 21.06.2004

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


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

Ten post edytował sayWOW 18.02.2005, 13:35:16
Go to the top of the page
+Quote Post
gdaq
post 18.02.2005, 16:36:09
Post #2





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 25.12.2003
Skąd: Warszawa

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


Poczytaj o substr i strpos.
http://pl.php.net/manual/pl/function.substr.php
http://pl.php.net/manual/pl/function.strpos.php
Gdaq
Go to the top of the page
+Quote Post
crash
post 18.02.2005, 17:16:41
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


  1. <?php
  2. $tekst = preg_replace('#{.+}#i', '', $tekst);
  3. ?>


--------------------
Go to the top of the page
+Quote Post
sayWOW
post 21.02.2005, 10:23:19
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 21.06.2004

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


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.
Go to the top of the page
+Quote Post
crash
post 21.02.2005, 11:02:42
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


  1. <?php
  2. echo preg_replace('#{[^{}]+}#i', '', $string);
  3. ?>


--------------------
Go to the top of the page
+Quote Post
tiraeth
post 21.02.2005, 11:09:49
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


a ja robię to tak i działa:
  1. <?php
  2. echo preg_replace('/{(.*?)}/', '', $string);
  3. ?>
Go to the top of the page
+Quote Post
sayWOW
post 21.02.2005, 11:12:36
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 21.06.2004

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


Pokłony dla was Panowie, dziękuję i pozdrawiam.
Go to the top of the page
+Quote Post
bendi
post 21.02.2005, 11:21:32
Post #8





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

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


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 )


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:54