preg_replace /e экранирует символы

R
На сайте с 26.03.2009
Offline
17
2181

Помогите!

Есть шаблон 1.tmpl:


<html>
<head>
<title>{vars['title']}</title>
</head>
<body>
{vars['content']}
</body>
</html>

Есть массив $vars и обработчик шаблона:


$vars['title']='Заголовок';
$vars['content']='Контент';

$template = file_get_contents("1.tmpl");
$text= preg_replace('/\{(.*?)\}/e', "$1", $template);
echo $text;

Вылезает ошибка: Failed evaluating code: $vars[\'title\'] - то есть происходит экранирование одиночных кавычек, из-за чего код не работает.

В документации эта фишка прописана. Но спрашивается, нафига выполнять код, если в код добавляются ненужные слеши, которые выполнению мешают?

В общем, подскажите плиз, как избавиться от этого ненужного экранирования? Заранее благодарю!

Sano000
На сайте с 12.04.2009
Offline
54
#1

а почему просто не указать переменные в шаблоне?

Программирование было хобби - стало серьезной работой
R
На сайте с 26.03.2009
Offline
17
#2
Sano000:
а почему просто не указать переменные в шаблоне?

В смысле? Дело не в переменных на самом деле. Я привел простой пример, с которым возникла проблема.

kil
На сайте с 03.04.2006
Offline
84
kil
#3

Потерто... Все равно никто не поможет..

[Удален]
#4

так это чтобы нормально строчки в евал передавались ..... а вы для чего подумали? 🤣

чтобы грабли вам наставить?

S
На сайте с 28.10.2005
Offline
319
#5

А если так:


$text= preg_replace("/\{(.*)\}/Ue", "$1", $template);
kil
На сайте с 03.04.2006
Offline
84
kil
#6
seodude:
так это чтобы нормально строчки в евал передавались ..... а вы для чего подумали? 🤣

чтобы грабли вам наставить?

Ага, только там ничего не передается в eval. Наоборот - выполняется код с экранированными кавычками, что приводит к ошибке.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий