我创建了一些模板系统来帮助我以可换肤的方式输出数据库项目。它是这样工作的:
$tpl = "<html>
<body>
<div><span class="item">Favourite food:</span><span class="content">{item1}</span></div>
<div><span class="item">Hobby:</span><span class="content">{item2}</span></div>
<div><span class="item">Allergies:</span><span class="content">{item3}</span></div>
// up to 500 more lines like this
</body>
</html>";
$output = str_replace(
array('{item1}','{item2}','{item3}') ) ,
array($database['item1'],$database['item2'],$database['item3']) ,
$tpl );
echo $output;
现在我的问题是:并非每个数据库项目都必然有内容 - 所以,目前我得到这样的输出
最喜欢的食物:香蕉 爱好:{item2} 过敏:苹果
有什么方法可以使用这种系统并省略没有数据库条目的行?输出应该是这样的:
最喜欢的食物:香蕉过敏体质:苹果
我怎么能做到这一点?
更新:描述文本也可能有所不同,因此我更新了示例代码。而且我想避免使用 foreach 或 for-loops,因为那样模板本身就被破坏了。我希望能够插入随机 HTML。目前使用 smarty 或其他模板系统是不可行的。但我可以提供带有描述的第三个数组。
更新 2:我认为 $output 上的 preg_replace 可能会起作用?所以这意味着“如果在 $output 上的某处有一个包含 {} 括号的 html 标记,那么将整个标记从 to 擦除(我相应地更新了我的代码)你怎么看?你知道任何可以做到这一点的 reg_expression ?