Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z preg_replace, przy własnym systemie szablonów
Brand
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 28.10.2009

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


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ę. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Nie zmieniał czegoś co ma dwukropek czyli:

[^:]+
Go to the top of the page
+Quote Post
PiotrekM
post
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

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


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


Ten post edytował PiotrekM 4.03.2010, 15:18:39
Go to the top of the page
+Quote Post
Brand
post
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 28.10.2009

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


Dzięki fifi209, działa. (IMG:style_emoticons/default/winksmiley.jpg)
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: 24.08.2025 - 06:04