同じ codeigniter コードベースに基づいて 2 つのアプリケーションを作成しています。これらのアプリケーションはどちらも言語ベースの XML ファイルを使用するため (ネイティブの CI lang lib は使用できません)、アプリケーションごとに言語ごとに 1 つの XML ファイルがあります。
これらの XML ファイル内にはテキストが含まれており、表示しているアプリケーションに応じて、出力時のフォーマットが異なります。(単純な XML で XML をロードし、必要な要素を名前で出力しています)
アプリ 1 の XML 抽出例は次のようになります。
<instructions>
<instruction>**<strong>**Lorem ipsum dolor sit**</strong>** amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua</instruction>
</instructions>
アプリ 2 の抽出例は次のようになります。
<instructions>
<instruction>Lorem ipsum dolor sitamet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et **<br /><br />**dolore magna aliqua</instruction>
</instructions>
基本的に、これらの XML ファイルは、PHP 内で出力されるときにフォーマットするために、さまざまなマークアップを含める必要があります。上記の両方の例は、$app->instructions->instruction としてエコーされます。
現在、CDATAプレースホルダーを使用してフォーマットのバリエーションを実現し、それをスプリントして置き換えています。ただし、これは、潜在的に多数のマークアップ要素になる可能性があるものを置き換えるために、sprintf 関数内に複数のパラメーターが必要であるという私の意見では十分に柔軟ではありません。これまでのところ、交換する必要があるのは最大で 6 個の CDATA トークンです。
読み込まれているアプリに基づいて sprintf を条件付きにする必要があったという事実によって、これがさらに複雑になります。不要な PHP で HTML を汚染しないように、コントローラーでこれを行うことを選択したという事実によって、さらに悪化しました。
私が達成したいことを追跡するには、次のとおりです。
- XML を HTML マークアップから切り離す
- HTML は PHP を排除するか、少なくとも使用を最小限に抑えます
- コントローラー内にHTMLは絶対にありません
どのような方法で作業しようとしても、これらのいずれかを妥協しているようです。