将循环实现到模板解析器中

时间:2010-11-18 06:14:16

标签: php

我正在构建一个非常轻量级的框架,并且想要一个自定义模板解析器。我当然知道其他解决方案,比如Smarty,但这对我所需要的东西来说太过分了。

之前我已经构建了简单的模板解析器,但从未弄清楚如何使用循环。我在思考Smarty的foreach循环,或者phpBB的循环块。不幸的是,我现在没有时间来浏览这些应用程序,那么将循环实现到模板解析器中的最简单方法是什么?

它也必须能够处理多维数组。

2 个答案:

答案 0 :(得分:0)

去phpkerby我认为这将是你的问题的解决方案

  

PHP KIRBY

答案 1 :(得分:0)

以下是如何做到这一点的一般想法......

您需要设置循环开始和结束参数。如下所示:

{LOOP_START:users}
    <p>{name}</p>
{LOOP_END:users}

然后在您的模板代码中,您想要从{LOOP_START:users}{LOOP_END:users}抓取循环占位符。您还想获取这些标记之间的所有内容片段。遍历您的数组并替换代码段中的变量,然后用新输出替换整个占位符。这是基本的想法:

$output = your_method_to_get_the_full_template_contents();
$loop_with_tags = your_method_to_find_the_loop_tags_and_content($output, 'users');
$loop_inside_tags = your_method_to_get_the_loop_contents($loop_with_tags);

$loop_output = '';
foreach($users as $user) {
    $loop_output .= str_replace(array_keys($user), array_values($user), $loop_inside_tags);
}

$output = str_replace($loop_with_tags, $loop_output, $output);