Запутался с eval()

grey109

Новичок
Запутался с eval()

Есть шаблон html-страницы с php-включениями, например:
===
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test <?php echo rand(1,111); ?></title>
....
</body>
</html>
===

Мне нужно выполнить php-код в шаблоне. Я делаю так:

$content=file_get_contents("templates/test.html");
eval("\$content = \"$content\";");

Получаю ошибку: "Parse error: parse error, unexpected '<' in ***.php(359) : eval()'d code on line 2"


Плз, подскажите где моя ошибка?
 

grey109

Новичок
был я там до написания поста, но ответа не нашел. плз, ткни меня носом в мою ошибку.
 

WP

^_^
Ошибка в том что ты не понял что делает eval, он не ищет PHP-теги и не исполняет внутри них код, он интерпретирует как PHP всю строку аргумента. Parse error появился потому что ты не экранировал ковычки. $content=file_get_contents("templates/test.html");
eval("\$content = \"".addslashes($content)."\";");
будет работать. Но это бессмысленная операция равная $content = strval($content);
Я думаю тебе нужен include + ob_start.
 

grey109

Новичок
Мда... include + ob_start усложнит задачу.

Ладно, спасибо за помощь.
 

vitus

мимо проходил
не усложняет совсем

ob_start();
include($template);
$content=ob_get_contents();
ob_end_clean();

- фсё
 
Сверху