Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: atomy w wyrażeniu regularnym
Forum PHP.pl > Forum > Przedszkole
Krzychur
Problem czysto teoretyczny.
Powiedzmy, że chcę zamienić na coś tekst pomiędzy "start a" i "koniec a" gdzie:
a = a-z9-9... ale nikt nie wie konkretnie co to jest
Np. $string =:
'-- start qwerty --jakis tekst-- koniec qwerty --'
Napisałem coś takiego z góry założonym przekonaniem, że działać to nie będzie:
  1. <?php
  2.  preg_replace('#-- start ([a-z0-9-_])+ --(.*?)-- koniec 1--#','',$string);
  3. ?>


Co powiniennem zrobić, aby funkcja działała po mojej myśli?
Michał2000
A nie poprostu:

  1. <?php
  2. preg_replace('#-- start ([a-z0-9-_])+ --$zmienna_z_poprawka-- koniec 1--#','',$string);
  3. ?>
Krzychur
NIe nie.
Skrypt w ostatniej fazie wyczyszcza plik *.tpl z części kodu, którym nie kazano się wyświetlić. Oryginalny, nie przykładowy kod to np.:

<!-- IF show_prolog -->Prolog: {prolog}<!-- ENDIF show_prolog -->

Więc, chodzi mi o coś takiego, aby instrukcja warunkowa wyszukiwała tekst:
<!-- IF xyz -->(.*?)<!-- ENDIF xyz -->, tylko wiadomo, że xyz były takie same w obu przypadkach, żeby np. jeżeli mam kilka takich instrukcji nie skracała sobie pracy szukając najbliższego <!-- ENDIF ([a-z0-0-_])+.
FiDO
Byles blisko na samym poczatku.. zgubil Cie maly szczegol:
  1. <?php
  2.  
  3. echo preg_replace('#-- start ([a-z0-9_]+) --(.*?)-- koniec 1 --#','',$string);
  4.  
  5. ?>

Plusa miales po nawiasie, a nie w jego srodku... hmm.. pomylka ?
Krzychur
Wielkie dzięki FiDO!
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.