我有一个模板系统来显示基于$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 }}" />';
我不希望输入值被替换,即使它与正则表达式匹配。由于我在这里使用了很多模式,如何最有效地避免这种情况?