如何为MySQL记录创建没有eval()
的简单,快速和安全的PHP MySQL模板:
+--------------------------------------------------------------+
| id | content |
|--------------------------------------------------------------|
| 12 | Today is {date}<br />Current time {include 'time.php'} |
+--------------------------------------------------------------+
{date}
必须返回echo date('l');
,time.php内容为<?php echo date('h:i A'); ?>
预期结果为:
今天是星期四当前时间23:17 PM
答案 0 :(得分:0)
您可以使用正则表达式搜索文本,也可以使用替换方法获得所需的效果。
要构建一个复杂的模板引擎,我会引用twig或Smarty(或其他),看看他们是如何做到的。
答案 1 :(得分:0)
有可能通过preg_replace
。 include
的示例:
function finclude($file){
return include($file);
}
$str = "Today is {include 'date.php'}.";
echo preg_replace("/\{include '(.*)\'}/e", 'finclude("$1")', $str);
date.php:
<?php return date('jS \of F'); ?>, 2011
将返回:Today is 20th of July.
有没有人知道在没有/e
eval
的情况下更好的方式(安全,速度表现)?