我使这个失败正则表达式匹配if block用于模板目的! 我的if块是
{if username == 'admin'}
Hello Admin
{else}
Hello visitor
{endif}
或者
{if pagetitle == 'about'}
We are so and so!
{endif}
{else}阻止是可选的!
我失败的正则表达式是
$pattern = '@\{if\s+(.*?)\}(.*?)(\{else\}(.*?))?\{endif\}@si';
我的正则表达式将{else}合并为“访问者”#39;我无法拆分它们! 请帮助这个正则表达式来处理上面的{if}块!
答案 0 :(得分:1)
如果你想让{else}和hello访客分手,你可以使用这个正则表达式:
\{if\s+(.*?)\}(.*?)(?:(\{else\})(.*?))?\{endif\}
<强> Working demo 强>
MATCH 1
1. [4-23] `username == 'admin'`
2. [24-39] `
Hello Admin
`
3. [39-45] `{else}`
4. [45-62] `
Hello visitor
`