0
我有模板引擎。匹配{if} ... {/ if}块时,内容分裂由{else | elif}条件决定。但是,当内容嵌套{if} ... {/ if}块时,{else | elif}条件算法匹配错误else或elif标签。可能我有这样的内容;preg_match不在特定标签之间
黑线应该可选,但是红线不可选择。
这是我的老匹配模式,但它不能正常工作
/{(else|elif)[\s]*(.*?)[\s]*}/
我有模板引擎。匹配{if} ... {/ if}块时,内容分裂由{else | elif}条件决定。但是,当内容嵌套{if} ... {/ if}块时,{else | elif}条件算法匹配错误else或elif标签。可能我有这样的内容;preg_match不在特定标签之间
黑线应该可选,但是红线不可选择。
这是我的老匹配模式,但它不能正常工作
/{(else|elif)[\s]*(.*?)[\s]*}/
preg_match_all("/\{\/if}(.*?)\{if \$test3 \}/ms", $input_lines, $output_array);
Echo $output_array[1];
看到它在行动http://www.phpliveregex.com/p/fhf
(您需要按preg_match_all按钮,它的工作)
是的这个工作,但不正确。例如,当内容“abc {else} xyz”正则表达式不匹配时。所以我想我需要一个“(?!)”修饰符或类似的东西。 – redfox9999
@ redfox9999更新:-) – Andreas
对不起,但仍然无法正常工作。我需要这样的模式。 (不在{if}){(else | elif).....}(不在{/ if}之间) 但我无法写出适当的正则表达式 – redfox9999