次のように構成されたテキストベースのルールのグループがあります。
ルール 1: [PN] が [N] より大きい場合は [XXX] を行う ルール 2: [PRD ..] を取得し、[X.XX] を追加する
これに対応するのは、グループ化された各コードを CSS クラス ID (jQuery 用) に変換するデータの配列です。
また、次の例のように、単純な構造化配列に格納された [ code ] から ID への変換の配列もあります。
$translate = array(
'XXX' => 'gen-string-input',
'PN' => 'gen-positivenumber-input',
'N' => 'gen-number-input'
);
次のことが達成できることが重要です。
[ code ] の各インスタンスを、次のような構造の span タグ に置き換える必要があります。
<span class="[classname]" unique="[hash]" offset="[offset]">[CODE]</span>
これは、フィールドが
- classnameは $translate 配列の結果です
- hashは、ルールごとに静的な md5 ハッシュです
- offsetは、文字列内のフィールドの位置です (たとえば、最初の例では、フィールド[XXX]は位置 0、[PN]は位置 1 など)。
この情報に基づいて、ルール 1に対して次の出力が得られると予想されます。
<p>
Do <span class="gen-string-input"
unique="[md5]"
offset="0">[XXX]</span>
when <span class="gen-positivenumber-input"
unique="[md5]"
offset="1">[PN]</span>
greater than <span class="gen-number-input"
unique="[md5]"
offset="2">[N]</span>
</p>
現在、str_replace を使用してこれを達成しようとしていますが、それだけでは十分ではありません。