Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z preg_replace
Forum PHP.pl > Forum > PHP
Brand
Witam. Piszę własny system szablonów utknąłem przy zamianie zmiennych oraz tablic na kod php. Składnia ma być taka:

Dla zmiennych:
Kod
{$var}


Dla tablic
Kod
{$array:item}


Przy samych zmiennych radziłem sobie takim kodem:
  1. $tpl = preg_replace("#\{\\$(.*?)\}#si", '<?php echo $this -> var[\'\\1\']; ?>', $tpl);


Ale nie mam pomysłu jak to zrobić z tablicami. Wymyśliłem coś takiego, ale to nie działa:
  1. $tpl = preg_replace("#\{\\$(.*?)\:(.*?)\}#si", '<?php echo $this -> var[\'\\1\'][\'\\2\']; ?>', $tpl);

Wstawić tego po tym pierwszym kodzie się nie da, bo on nie rozróżnia zmiennej od tablicy i zamienia wszystko jak leci. Wstawić przed tym pierwszym kodem też się nie da, bo znowu błędnie zamienia zwykłe zmienne.

Myślę, że trzeba zrobić, żeby ten pierwszy kod nie zamieniał rzeczy które mają dwukropek w nazwie, lecz nie wiem jak to zapisać. Liczę na waszą pomoc i z góry dziękuję. smile.gif
Fifi209
Nie zmieniał czegoś co ma dwukropek czyli:

[^:]+
PiotrekM
pole _array powinno przechowywać tablice w tablicy
  1. $this -> _array = array('nazwa' => array('test' => 43));


  1. $tpl = preg_replace("#\{\$(.*?)\:(.*?)\}#si", '<?php echo $this -> _array[\'$1\'][\'$2\']; ?>', $tpl); // pisane z pamieci, jakby co to popraw
Brand
Dzięki fifi209, działa. winksmiley.jpg
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.