我正在尝试使用正则表达式将此文本分成数组,但是我的正则表达式不够强大。
注意:{elseif}
就像PHP一样,可以有一行或多行
{if 'Fred' == 'Fred'}
Welcome Sir.
{elseif 'Fred' == 'Wilma'}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
我试图实现的最终数组如下所示:
array(
[0] => array(
[0] => if 'Fred' == 'Fred'
[1] => elseif 'Fred' == 'Wilma'
[2] => else
),
[1] => array(
[0] => Welcome Sir.
[1] => Welcome Ma'am.
[2] => Welcome, whatever you are.
)
);
我正在使用此正则表达式来做到这一点:
preg_match_all("/\{(if|elseif|else|\/if).*\}(.*)\{(elseif|else|\/if).*\}/isU", $section, $matches);
但这输出:
Array
(
[0] => Array
(
[0] => {if 'Fred' == 'Fred'}
Welcome Sir.
{elseif 'Fred' == 'Wilma'}
[1] => {else}
Welcome, whatever you are.
{/if}
)
[1] => Array
(
[0] => if
[1] => else
)
[2] => Array
(
[0] =>
Welcome Sir.
[1] =>
Welcome, whatever you are.
)
[3] => Array
(
[0] => elseif
[1] => /if
)
)
有人可以帮帮我吗?谢谢!
假设您的if / else事情将恰好在第二个括号({)之后开始
preg_match_all("/(\{(?:if|elseif|else)[^\}]*\})\s*([^{]+)\s+/mi", $section, $matches);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句