我已经在PHP中创建了一个简单的模板“引擎”来将PHP生成的数据替换为HTML页面。下面是它如何工作的:PHP - 我需要一些帮助我的正则表达式
我主要的模板文件,我有变量,像这样:
<title><!-- %{title}% --></title>
我然后将数据分配到这些变量的主要页面加载
$assign = array (
'title' => 'my website - '
);
然后,我有为内容页面加载单独的模板块。以上只是处理页眉和页脚。在这些“内容模板文件”中的一个,我有变量,像这样:
<!-- %{title=content page}% -->
一旦得到执行,主要的模板数据进行编辑,包括页面内容变量导致:
<title>my website - content page</title>
为此,它会用下面的代码:
if (preg_match('/<!-- %{title=\s*(.*?)}% -->/s', $string, $matches)) {
// Find variable names in the form of %{varName=new data to append}%
// If found, append that new data to the exisiting data
$string = preg_replace('/<!-- %{title=\s*(.*?)}% -->/s', null, $string);
$varData[$i] .= $matches[1];
}
这基本上消除了模板变量,然后将可变数据分配给现有变量。现在,这一切都很好。我遇到的问题是嵌套模板变量。如果我这样做:
<!-- %{title=content page (author: <!-- %{name}% -->) -->
该模式有时会弄乱每个变量的开始和结束标记。
如何修复我的正则表达式以防止出现这种情况?
谢谢。
我对正则表达式并不是很满意,所以如果你能推荐一个替代方案,那么我就是全力以赴。我还能如何完成我在做的事情? – dave 2010-06-23 01:30:29