[php] Problem z wyrażeniem PCRE - pierwsze wystapienie

0

Witajcie,
mam problem, mam poniższe wyrażenie (PCRE) które nie działa jak należy...
/{\$(.*)}/
Gdy wpiszę {$foo}{$bar} to \1 przyjmuje wartosc foo}{$bar. Co zrobic aby znalezc pierwsze wystapienie } ??
Dzieki

0

.*? ;)

0

Witajcie,
znowu mam problem z wyrazeniem PCRE:

$warunek = '$r!=2';
$warunek = preg_replace('/\$(.*?)/', '$this->_vars[\'\1\']', $warunek);

Niestety nie działa... Powstaje:

$this->_vars[""]r!=2

Pomozecie?

0

Ale napisz co chcesz osiągnąć, bo '/$(.?)/' zawsze znajdzie tylko '$' gdyż po .? nie ma nic, więc .*? dopasuje ciąg pusty.

0

Otóż chcę aby zmienne np. $r były zamieniane na $this->_vars['r']
Niestety nigdy nie korzystałem z PCRE tylko z POSIX (PCRE jest lepsze do pisania systemu szablonów a la Smarty)....

0

spróbuj tak

$warunek = preg_replace('/\$(\w+)/', '$this->_vars[\'\1\']', $warunek);
0
amadeusz.jasak napisał(a)

[...] do pisania systemu szablonów a la Smarty)....
A co jest zlego w Smarty ze nie mozesz go uzywac??
Tez sie kiedys zastanawialem nad wlasnym systemem templatow, ale doszedlem do wniosku ze to gra niewarta swieczki. Smarty jest poteznym narzedziem, wiec czemu go nie ort!?? Jesli nie odpowiednich mozliwosci mozna bez problemu go rozbudowac do naszych potrzeb, lub w miare potrzeb zablokowac rozne tagi (np {php} zeby zabardzo nikt nie namieszal jesli chcemy to ort! jako skin)

Przy wlasnym pisaniu nie osiagniesz takich mozliwosci, przynajmniej nie tak latwo.
Czy Twoj system rozpozna taka skladnie??
($z1+$z2*($tab.element - $tab[$z3+2])!="koszt 22$") :>

1 użytkowników online, w tym zalogowanych: 0, gości: 1