preg_replace c модификатором e

demmi

Guest
preg_replace c модификатором e

Непонятным образом preg_replace с модификатором e не хочет переваривать константы в их значения

к примеру простенький парсер:
PHP:
$str='word {str1} word';
$str1='WORD';
define ('lt','{');
define ('rt','}');
$lt='{';
$rt='}';
...
// эта конструкция не работает lt , rt - константы
echo preg_replace("#lt([^rt]+)rt#e","\$GLOBALS[\\1]",$str);
// все ок $lt $rt - переменные
echo preg_replace("#$lt([^$rt]+)$rt#e","\$GLOBALS[\\1]",$str);
почему так?
 

гоша

Guest
долго пытался понять, при чём тут preg_replace, да еще с модификатором e.

demmi

константы в строках не интерполируются, по понятным причинам.

кроме того советую почитать про [m]preg_quote[/m]
 

demmi

Guest
вопрос не теоретичекий, для парсера надо было
т.к. extract + eval оказался медленней 3х preg_replace
 
Сверху