首先,我知道使用eval()
是一个糟糕的选择,
但是我的团队已经根据存储在数据库中的模板构建了一个应用程序
我被指定编辑一个模板,该模板应该在eval()
函数之外的脚本中使用变量
这是一个代码示例:
的template.php
function template($arg)
{
if($arg == "show")
{
$template = str_replace("\\'", "'", addslashes($row['template']));
}
return $template;
}
$row['template'] = "this is template from database that shows {$row[data]}";
$row[data] = {$variable};
show.php
<?php
include 'template.php'
$variable = "thisShouldAppear";
eval("\$var = \"".template("show")."\";");
echo $var;
?>
show.php中的输出是:
{$variable}
它应该显示:
thisShouldAppear
如果我从数据库外部分配变量,它可以工作,但我只能将其包含在数据库内的模板中。
示例:
<?php
include 'template.php'
$variable = "thisShouldAppear";
$row[data] = "{$variable}";
eval("\$var = \"".template("show")."\";");
echo $var;
?>
在这种情况下它可以工作,但目的是让模板中的值不是来自脚本。
任何帮助都会非常感激,因为我的时间已经不合时宜了
谢谢。