スキニング可能な方法でデータベースアイテムを出力するのに役立つテンプレートシステムを作成しました。それはこのように動作します:
$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ループは避けたいと思います。ランダムなHTMLを挿入できるようにしたい。現時点では、smartyまたは別のテンプレートシステムを使用することはできません。しかし、3番目の配列に説明を提供することはできます。
更新2:$ outputのpreg_replaceでうまくいくかもしれないと思いましたか?つまり、「$ outputのどこかに{}ブラケットを含むhtmlタグがある場合は、タグ全体をからに消去します(それに応じてコードを更新しました)。どう思いますか?これを実行できるreg_expressionを知っていますか? ?