Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] regular expression
szym011
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.06.2010

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


Witam forumowiczów.

Natknąłem się na pewien problem związany z wyrażeniami regularnymi.

Istnieje może funkcja która zwraca tekst pasujący do wzorca? Jeśli tak to pomógłby mi ktoś pomóc w napisaniu wzorca?

Pobieram do zmiennej zawartość jakiegoś pliku html. I tam chcę aby funkcja wycięła cały tekst który znajdzie się pomiędzy
  1. {for:cast}tekst{/for:cast}
(łącznie z tymi znacznikami for) a następnie wywaliła te znaczniki i zwróciła sam tekst. Dodam, że między znacznikami może znaleźć się dowolny znak.
Za pomoc dziękuję.
Pozdrawiam.
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


To nie przypomina HTML'a.
Go to the top of the page
+Quote Post
szym011
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.06.2010

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


  1. {for:cast}
  2. <div id="cast-top">
  3. <a href="#">
  4. <div class="cast">
  5. <span class="cast-name">{cast.name}</span>
  6. </div>
  7. </a>
  8. </div>
  9. {/for:cast}


Teraz przypomina? Te znaczniki są wymyślone przeze mnie po to aby skrypt mógł szybko je sobie oprawić, powielić i zastąpić.

Ten post edytował szym011 10.08.2012, 11:23:01
Go to the top of the page
+Quote Post
Tuminure
post
Post #4





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

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


Nie potrafię pisać wyrażeń regularnych ale myślę, że takie coś powinno zadziałać:
  1. preg_match_all('/\\{for:cast\\}.*?\\{\\/for:cast\\}/is', $text, $matches);
  2. echo var_dump($matches);

ewentualnie z .*? w nawiasie:
  1. preg_match_all('/\\{for:cast\\}(.*?)\\{\\/for:cast\\}/is', $text, $matches);
  2. echo debug::vars($matches);


Ten post edytował Tuminure 10.08.2012, 11:52:05
Go to the top of the page
+Quote Post
abort
post
Post #5





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Kod
$fulltekst = "{for:cast}tekst{/for:cast}";
$ilosc = preg_match ('|\{for:cast\}(.*?)\{/for:cast\}|ms', $fulltekst, $txt);
echo "<pre>\$fulltext = "; var_dump ($fulltekst); echo "</pre>";
Go to the top of the page
+Quote Post
szym011
post
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 18.06.2010

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


Podaliście kod bliski temu którego chce, ale nie do końca.
Jeśli wpisze:
  1. $fulltekst = "<html>{for:cast}tekst{/for:cast}</html>";

i zastosuje funkcje:
  1. $fulltekst = preg_replace ("|\{for:cast\}(.*?)\{/for:cast\}|ms", '<?php ?>', $fulltekst);

To podmienia cały tekst w zmiennej zamiast tylko tego wymaganego.
Go to the top of the page
+Quote Post
abort
post
Post #7





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


  1. $fulltekst = preg_replace ("|\{for:cast\}(.*?)\{/for:cast\}|ms", '<?php \\1 ?>', $fulltekst);

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: 23.08.2025 - 07:51