preg_replace с модификатором /e. Глюк или фитча?

Enable

Новичок
preg_replace с модификатором /e. Глюк или фитча?

Короче имеется строка вида:
PHP:
$str = '{IF var} just "quoted string" and \slashed string\ {/IF var}';
Хочу пропарсить этот блок с помощью regexp'a:
PHP:
$data['var'] = true;
$pattern = '#\{IF ([a-z]+)\}(.+?)\{/IF \1\}#ise';
$function = "!empty(\$data['\\1']) ? '\\2' : ''";
$str = preg_replace($pattern, $function, $str);
Так вот на выходе странные вещи происходят.
Получается: just \"quoted string\" and \slashed string\ - т.е. кавычки экранирются, слэши не экранируются. Хотя мне ни того, ни другого не надо.
Если выдернуть вторую подмаску через preg_match, то все нормально, ни че не экранируется.

Где тут сабака зарыта?
php 4.4.2, WinXP, все magic_quotes_* = off
apache 1.3.34
 

itprog

Cruftsman
WP
угу, получим проблему при
$str = '{IF var} just \'quoted string\' and \slashed string\ {/IF var}';
 

WP

^_^
Честно говоря мне это всё кажется очень стрёмным, я юзаю [m]preg_replace_callback[/m], от греха подальше.
 
Сверху