我正在构建一个模板系统,用于通过电子邮件发送当前以以下格式工作的人:
$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中执行此操作的最佳方法是什么?我以为我可以在数组中循环,但后来我失去了思路,迷失了我的所作所为!
所有帮助将不胜感激!! 感谢
答案 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";
}
}
?>
非常奇怪的方式,但我无法弄清楚更清楚。