我正在为一个应用程序创建模块,该模块将具有简单的自定义模板,带有标签,这些标签将被数据库中的数据替换。此模块的每个实例中的字段名称都不同。我想知道是否有更好的方法来做到这一点。
下面的代码是我想出来的,但我相信一定有更好的方法。我在 preg_split 和 preg_match_all 上挣扎,刚刚达到我的极限,所以我以愚蠢的方式做到了。
<?php
$customTemplate = "
<div>
<<This>>
<<that>>
</div>
";
function process_template ($template, $begin = '<<', $end = '>>') {
$begin_exploded = explode($begin, $template);
if (is_array($begin_exploded)) {
foreach ($begin_exploded as $key1 => $value1) {
$end_exploded = explode($end, $value1);
if (is_array($end_exploded)) {
foreach ($end_exploded as $key2 => $value2) {
$tag = $begin.$value2.$end;
$variable = trim($value2);
$find_it = strpos($template,$tag);
if ($find_it !== false) {
//str_replace ($tag, $MyClass->get($variable), $template );
$template = str_replace ($tag, $variable, $template);
}
}
}
}
}
return $template;
}
echo(process_template($customTemplate));
/* Will Echo
<div>
This
that
</div>
*/
?>
将来我将连接 $MyClass->get() 用正确的数据替换标签。自定义模板将由用户构建。
千巷猫影
慕娘9325324