Lee*_*Lee 2 html php tags preg-match-all str-replace
我将HTML布局存储在MySQL数据库中.这些布局可能包含HTML中的标签,如下所示.
{site.poll="fred,joe,john"}
Run Code Online (Sandbox Code Playgroud)
和
{site.layout.header}
Run Code Online (Sandbox Code Playgroud)
目前我正在搜索HTML模板,通过执行多个preg_matches来识别标签,循环遍历数组然后执行str_replace(),替换为另外的部分html模板也从数据库中拉回来.下面的示例..
if (preg_match_all('/{site\.layout\.(.)*}/', $data, $match) != FALSE)
{
foreach($match[0] as $value)
{
$value = trim($value, '{}');
$tmp_store = explode('.', $value);
$tmp_partial = $this->parse($this->get_layout(end($tmp_store)));
$data = str_replace('{'. $value .'}', $tmp_partial, $data);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要为我需要的每个标签执行一个正则表达式,然后在该标签的每个实例上执行一个str_replace ..同样需要为每个所需的部分模板执行..对我来说,这似乎都很重...
有没有更好的方法呢?
提前致谢..
编辑:我不想使用现有的库,我想自己做这个任务,并在此过程中学习..
那么你可以用preg_replace一次性查找和替换你的标签.
我认为最好的方法是使用现有的模板系统,如Twig或Smarty.我确信您可以将数据读入Smarty(它不必来自文件).我敢肯定Twig有类似的东西.
Twig和Smarty还提供缓存选项,因此您不会在每次请求时重建模板.但是,如果模板存储在文件中,它们的效果最佳.
如果你真的必须推出自己的模板系统,你应该构建一种实际上按字符检查内容的解析器.这可能比正则表达式更快更准确(虽然更复杂)
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |