PHP:将变量插入模板文件-include()或file_get_contents()?
我正在进行一个项目,在这个项目中,我将所有HTML内容与PHP代码的其余部分分开。每个需要为PHP变量解析HTML的实例都通过函数调用发送。其中大多数处理来自数据库的动态数据 模板文件的一个简单示例:PHP:将变量插入模板文件-include()或file_get_contents()?,php,variables,templates,Php,Variables,Templates,我正在进行一个项目,在这个项目中,我将所有HTML内容与PHP代码的其余部分分开。每个需要为PHP变量解析HTML的实例都通过函数调用发送。其中大多数处理来自数据库的动态数据 模板文件的一个简单示例: <div id='{$data['id']}'>{$data['text']}</div> 函数的作用是:简单地定位正确的文本文件,加载变量并以html的形式返回字符串。这就是我遇到的问题: public static function load($templat
<div id='{$data['id']}'>{$data['text']}</div>
函数的作用是:简单地定位正确的文本文件,加载变量并以html的形式返回字符串。这就是我遇到的问题:
public static function load($template, $data=array()) {
ob_start();
include ( TEMPLATE . $template .'.tpl' );
ob_flush();
}
我尝试过使用include()和file_get_contents(),但是没有用-我正在寻找一个简单的解决方案,我可以使用{$data['var']}语法,最好保留模板HTML作为一个简单变量,这样就可以将它添加到输出中
我试图避免使用eval()
有人能给我一些指导吗?我过去也做过同样的事情,您可以这样修改下面的代码:
public static function load($template, $data=array()) {
ob_start();
include ( TEMPLATE . $template .'.tpl' );
$getData = ob_get_clean();
preg_match_all("|{([^>].*)}|U", $getData, $getDataArr, PREG_SET_ORDER);
if (is_array($getDataArr) && count($getDataArr) > 0) {
foreach ($getDataArr as $php) {
if (strpos($php[1],'$') !== false) {
$getData= str_replace($php[0], (eval('return $'.str_replace('$', '', $php[1]).';')), $getData);
}
}
}
echo $getData;
}
public static function load($template, $data=array()) {
ob_start();
include ( TEMPLATE . $template .'.tpl' );
$getData = ob_get_clean();
preg_match_all("|{([^>].*)}|U", $getData, $getDataArr, PREG_SET_ORDER);
if (is_array($getDataArr) && count($getDataArr) > 0) {
foreach ($getDataArr as $php) {
if (strpos($php[1],'$') !== false) {
$getData= str_replace($php[0], (eval('return $'.str_replace('$', '', $php[1]).';')), $getData);
}
}
}
echo $getData;
}