循环通过自定义模板挂钩的东西

时间:2010-05-01 12:42:30

标签: php arrays templates

我正在构建一个模板系统,用于通过电子邮件发送当前以以下格式工作的人:

$array['key1'] = "text";
$array['key2'] = "more text";

<!--key1--> // replaced with *text*
<!--key2--> // replaced with *more text*

对于这个特定项目,我有一个具有这种结构的嵌套数组:

$array['object1']['nest1']['key1'] = "text";
$array['object2']['next1']['key1'] = "more text";

<!--[object1][nest1][key1]--> // replaced with *text*
<!--[object2][nest1][key1]--> // replaced with *more text*

<!-- .. -->将被放置在HTML文件中,然后将其加载到字符串中。顶部示例显示我正在用数据替换注释。

在PHP中执行此操作的最佳方法是什么?我以为我可以在数组中循环,但后来我失去了思路,迷失了我的所作所为!

所有帮助将不胜感激!! 感谢

1 个答案:

答案 0 :(得分:1)

好吧,使用eval很危险,但是如果所有的代码都运行了,那么它就不会受到影响。你可以试试这个:

<?php

$array['object1']['nest1']['key1'] = "text";
$array['object2']['nest1']['key1'] = "more text";

$str = "sadfadsfjäadsföljadsölf
<!-- ['object2']['nest1']['key1'] -->
asdföadsjlf";

$split = explode('
',$str); // This sucks, you can use \n to detect line-breaks. Doesn't work that way in this example

foreach($split as $key => $value) {
    if(preg_match('/\<\!\-\- (\[.+\]) \-\-\>/e',$value,$matches)) {
    eval("echo \$array".$matches[1].";");
    echo "\n";
} else {
    echo $value."\n";
}
}

?>

非常奇怪的方式,但我无法弄清楚更清楚。