Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne - odnalezienie fragmentu i usunięcie
Michael2318
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Potrzebuję najpierw sprawdzić czy przykładowo zmienna $a (to jest string) zawiera w sobie coś takiego:
{costam.hehe}, gdzie największą wartość ma to co podkreśliłem, czyli costam. Dlaczego? Dlatego, że takie fragmenty:
{costam}, mają zostać nieruszone, z kolei takie jak już wyżej podałem:
{costam.hehe}
mają zniknąć w całości, ALE - wyrażenie regularne musi mi zwrócić to co podkreśliłem, a następnie skasować taki ciąg znaków:

Kod
<!-- costam -->
bla bla bla bla {costam.hehe} bla bla bla bla bla bla
<!-- costam -->


Podsumowując, skrypt musi znaleźć czy w zmiennej występuje taki wzorzec: {X.Y}, jeśli istnieje to pobiera mi wartość X i usuwa to:

Kod
<!-- X [obojetnie jaki tekst, do momentu] X -->


Ktoś byłby w stanie mi pomóc? Regularki to raczej nie jest moja mocna strona ;/

Ten post edytował Michael2318 26.01.2013, 15:36:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Michael2318
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


ehh no i finalnie nie działa, poprawiłem to co podałeś :/

Kod wygląda tak:

Kod
<!-- BEGIN costam -->
{costam.CZTERY}
<!-- END costam -->


I mimo tego:

  1. if ( preg_match("#{(.*?).(.*?)}#is", $tmp, $matches) )
  2. {
  3. $tmp = preg_replace('#<!-- BEGIN '.$matches[0].'.*'.$matches[1].' -->#si', '', $tmp);
  4. }


Na ekranie pojawia mi się:

{costam.CZTERY}

EDIT:

Aha i finalnie to jest jeden string, nie da:

  1. <?php
  2.  
  3. $text = 'lalala
  4. <!-- BEGIN costam -->
  5. {costam.mojemoje}
  6. <!-- END costam -->
  7. bebebe';
  8.  
  9. if ( preg_match("#{(.*?).(.*?)}#is", $text, $matches) )
  10. {
  11. $text = preg_replace('#<!-- BEGIN '.$matches[0].'.*'.$matches[1].' -->#si', '', $text);
  12. }
  13. echo $text;
  14. ?>



EDIT:

Dobra, działa. Tutaj:

  1. {(.*?).(.*?)}


Miało być tak:

  1. {(.*?)\.(.*?)}


+ dwa razy $matches[1] a nie 0 a potem 1 (IMG:style_emoticons/default/wink.gif)

Dzięki.

Ten post edytował Michael2318 26.01.2013, 16:52:21
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: 27.12.2025 - 01:03