Php preg_replace IF标记语句
我使用这个代码Php preg_replace IF标记语句,php,preg-replace,preg-match,Php,Preg Replace,Preg Match,我使用这个代码 $text = ' [IF=is_login] [IF=is_subscriber]subscriber[/IF] [IF=is_partner]partner[/IF] [/IF]'; $count = 0; do { $content = preg_replace ("#\\[IF=(.+?)\\](.*?)\\[/IF\\]#ies", "the_if('\\1', '\\2', FALSE)", $text, -1, $count); }
$text = '
[IF=is_login]
[IF=is_subscriber]subscriber[/IF]
[IF=is_partner]partner[/IF]
[/IF]';
$count = 0;
do
{
$content = preg_replace ("#\\[IF=(.+?)\\](.*?)\\[/IF\\]#ies", "the_if('\\1', '\\2', FALSE)", $text, -1, $count);
}
while ($count > 0);
Ie可能是一个层次结构,但结果表明该函数返回第一个[/IF]的所有内容
有什么想法吗?有额外的转义斜杠,您需要设置
$text
,而不是$content
,以便在循环过程中替换它
$text = preg_replace ("#\[IF=(.+?)\](.*?)\[/IF\]#ies", "the_if('$1', '$2', FALSE)", $text, -1, $count);
第一个输出=[IF=is\u subscriber]subscriber,但需要[IF=is\u subscriber]subscriber[/IF][IF=is\u partner]partner[/IF]这是当我取出
e
execute标志时得到的结果:IF('is\u login','is\u subscriber','subscriber',FALSE')IF('is\u partner',partner',FALSE)
,看起来正确。可能有助于查看或了解\u if()应该做什么