preg_replace() - replacement parameter

Nirva

Dmitry Polyakov
preg_replace() - replacement parameter

Такая вот возникла проблема, есть функция в классе:
PHP:
$pattern = ("/{!(\w+)!}/");
//     $a = "title_news";
//        echo $this->temp["$a"];
$this->page_all = preg_replace($pattern,$this->temp["$1"],$this->page_temp);
echo $this->page_all;
$this->temp это ассоциативный массив
в строке $this->page_temp содержаться подстроки(заменямые) вида {!подстрока!}
соотвественно, элементы массива $this->temp выглядят как $this->temp['подстрока'].
функция возвращает в строке $this->page_all отформатированную строку $this->page_temp, в которой любая из подстрок {!подстрока!} заменена на значение элемента $this->temp['подсторка']. Но в том-то и дело, что функция должна возвращать, но не возвращает.
Просиходит это исключительно в случах, когда элемент в replacement указан как ссылка на подшаблон (\w+).
Если же подставить вместо $1 или \\1 - $a (а $this->temp[title_news] существует) все в порядке - все подстроки указанного в шаблоне вида будут заменены на значение элемента $this->temp['title_news'].
А вот со ссылкой не работает, при чем если оставить только "$1" или "\\1" все будет в порядке - все подстроки {!подстрока!} будут заменены на "подстрока".

Я понимаю, можно реализовать это в несколько в функций, что сейчас и сделаю, но все же хотелось... может как-то все-таки можно или я глубоко заблуждаюсь?

хелп ми, плиз. или просто скажите, что действительно так нельзя.
 

Nirva

Dmitry Polyakov
какой же я дурак. всем спасибо, кто смотрел:
PHP:
$pattern = ("/{!(\w+)!}/e");
$replacement = ('$this->temp' .'[' .'\\1' .']');
$this->page_all = preg_replace($pattern,$replacement,$this->page_temp);
echo $this->page_all;
велосипед, наверное погнутый, но работает. =)
 
Сверху