对于一个小组项目,我正在尝试为 PHP 创建一个模板引擎,以便那些对语言缺乏经验的人可以在他们的 HTML 中使用 {name} 之类的标签,PHP 将用数组中的预定义变量替换该标签。以及支持循环。
这远远超出了项目的预期,但由于我有使用 PHP 的经验,我认为让我保持忙碌是一个很好的挑战!
我的主要问题是,我如何做解析器的循环部分,这是实现这样一个系统的最佳方式。在您只推荐现有的模板系统之前,我更愿意自己创建它以获取经验,因为我们项目中的所有内容都必须是我们自己的。
目前,基本解析是使用 regex 和 preg_replace_callback 完成的,它检查 $data[name] 是否存在以及是否替换它。
我尝试过多种不同的循环方式,但不确定我是否在正确的轨道上!
一个例子,如果解析引擎给出的数据是:
Array
(
[title] => The Title
[subtitle] => Subtitle
[footer] => Foot
[people] => Array
(
[0] => Array
(
[name] => Steve
[surname] => Johnson
)
[1] => Array
(
[name] => James
[surname] => Johnson
)
[2] => Array
(
[name] => josh
[surname] => Smith
)
)
[page] => Home
)
它正在解析的页面类似于:
<html>
<title>{title}</title>
<body>
<h1>{subtitle}</h1>
{LOOP:people}
<b>{name}</b> {surname}<br />
{ENDLOOP:people}
<br /><br />
<i>{footer}</i>
</body>
</html>
它会产生类似于:
<html>
<title>The Title</title>
<body>
<h1>Subtitle</h1>
<b>Steve</b> Johnson<br />
<b>James</b> Johnson<br />
<b>Josh</b> Smith<br />
<br /><br />
<i>Foot</i>
</body>
</html>
非常感谢您的时间!
非常感谢,
Ps 我完全不同意,因为我正在寻找类似于已经存在的经验的东西,所以我的格式良好且易于理解的问题被否决了。
Pps 看来这个话题有很多意见,请不要投反对票,因为他们对你有不同的意见。每个人都有自己的权利!