PHP-php模板引擎,用正则匹配自定义标签

PHP-php模板引擎,用正则匹配自定义标签

甜柠檬 发布于 2017-01-07 字数 257 浏览 1056 回复 1
下面是html标签 其中$row为一数组,
<list form="$row" name="field">
姓名:{$field.name}<br/>
年龄:{$field.age}<br/>
《注:可能这里还有更多选项》
</list>

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑾兮 2017-09-28 1 楼

我以前也写过模板引擎,可以跟你说说,你这个应该分多个来匹配,
一、<list form="$row" name="field">,
二、</list>
三、{$field.age}

1)、preg_match_all('/<lists+form="($[a-z_]w+)"s+name="([a-z_]w+)">/i', $html, $matches);
2)、preg_match_all('/</(list)>/i', $html, $matches);
3)、preg_match_all('/{($[a-z_]w+).([w]+)}/i', $html, $matches);

剩下的就是对括号里的子项进行替换了,这个其实简单,做模板引擎难的是要考虑到很多细节方面的问题,需要考虑得很全面,写模板引擎就像是写一门简单的解析语言一样,很费脑子的