PHP で単純な正規表現を使用してカスタム テンプレートを解析しています
$row = preg_replace_callback(
'/\^([^\^]+)\^/', create_function ('$m', 'global $fields_ar; return $fields_ar{$m[1]};'),
$template
);
基本的に、2 つの ^ の間のすべては、対応する変数名の値に置き換えられます。たとえば、$template が次の場合:
<td>^title_source^ by ^author_source^<br/>
と
$fields_ar['title_source'] == 'my title' and $fields_ar['author_source'] == 'my author'
$行は次のようになります:
<td>my title by my author<br/>
すべて正常に動作しますが、区切り記号を変更したいです。他の 2 つの ^ の間に含まれるリスクがある ^ の代わりに、"sel3ction" などの文字列を使用したいのですが、
$row = preg_replace_callback(
'/sel3ction([^sel3ction]+)sel3ction/', create_function ('$m', 'global $fields_ar; return $fields_ar{$m[1]};'),
$template
);
動作しません。問題は負の部分にあると確信しています。
助言がありますか?
私はそれが「クリーンな」アプローチではないことを知っています。最も奇妙な文字列でさえトリッキーになる可能性があるためですが、今のところ、この方法を試してみたいと思います。より標準的なソリューションがある場合は、もちろん大歓迎です。
ありがとう!