我想知道在数据库中存储HTML模板的最佳方法,以便能够检索它们并插入变量。显然,我可以将它们存储为PHP,然后'EVAL'记录...但我听说这是邪恶的。是否有更好的方法? :) 编辑:抱歉,我的表述不够清晰...我试图通过说HTML模板来简化它...但我真正意思是小型可嵌入HTML元素(类似于YouTube)...而不是整个网站。
<object width="{$width}" height="{$height}">
<param name="movie" value="http://www.youtube.com/{$path}"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/{$path}"
type="application/x-shockwave-flash"
allowscriptaccess="always"
allowfullscreen="true"
width="{$width}" height="{$width}">
</embed>
</object>
str_replace
函数替换其中的PHP变量,就像PHP本身在字符串中所做的一样。<?php
$template_path = 'templates/youtube_vid.tpl';
$template_data = file_get_contents($template_path);
$old = array('{$width}', '{$height}', '{$path}');
$new = array(425, 344, 'v/zuZB2O6orV0&hl=en_US&fs=1&');
echo str_replace($old, $new, $template_data);
?>
这就是全部内容。
当然,你可以使用类似于<?php $width; ?>
的占位符,并且只需include
模板,但这会让你面临注入攻击的风险。这是更安全的方法。
Mark,你需要将模板存储在数据库中吗?这会给你的数据库服务器增加沉重的负担,每次请求这些模板时都会如此,除非你对它们进行缓存。
与具有内置缓存以简化文件读取的文件系统相比,这种方式更为繁琐。
此外,你不会面临使用eval()可能带来的潜在安全漏洞。