模板if else else endif php

时间:2014-08-12 01:28:18

标签: php regex templating

我使这个失败正则表达式匹配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}块!

1 个答案:

答案 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
`