私は価値に基づいて物事を示すためのテンプレートシステムを持ってい$this->cms_language()
ます。この場合、$value
は正規表現パターンに一致するものに置き換えられます。http://www.getnocms.com/2012/11/better-multi-language-template-better.htmlと同じように機能します
$language = $this->cms_language();
$pattern = array();
$pattern[] = "/\{\{ if_language:$language \}\}(.*?)\{\{ elif_language:.*?\{\{ end_if }}/s";
$pattern[] = "/\{\{ if_language:$language \}\}(.*?)\{\{ else \}\}.*?\{\{ end_if }}/s";
$pattern[] = "/\{\{ if_language:$language \}\}(.*?)\{\{ end_if }}/s";
$pattern[] = "/\{\{ if_language:.*?\{\{ elif_language:$language \}\}(.*?)\{\{ elif_language:.*?\{\{ end_if }}/s";
$pattern[] = "/\{\{ if_language:.*?\{\{ elif_language:$language \}\}(.*?)\{\{ else \}\}.*?\{\{ end_if }}/s";
$pattern[] = "/\{\{ if_language:.*?\{\{ elif_language:$language \}\}(.*?)\{\{ end_if }}/s";
$pattern[] = "/\{\{ if_language:.*?\{\{ else \}\}(.*?)\{\{ end_if }}/s";
$replacement = '$1';
$value = preg_replace($pattern, $replacement, $value);
これまでのところ、すべてがとても良かった。しかし、その後、私は問題に気づきました。たとえば、これらのパターンのいずれかを含むテキスト領域または入力を記述します。何かのようなもの:
$value = '<input value="{{ if_language:indonesia }} do_something {{ end_if }}" />';
正規表現と一致していても、入力値を置き換えたくありません。ここでは多くのパターンを使用しているので、これを回避する最も効果的な方法は何ですか?