preg_replace IF标记语句

时间:2015-05-15 16:24:45

标签: 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); 
} 
while ($count > 0);

即成为一个层次结构,但事实证明该函数返回了第一个[/ IF]的所有内容

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

有额外的转义斜线,您需要设置$text,而不是$content,以便在循环期间替换它

$text = preg_replace ("#\[IF=(.+?)\](.*?)\[/IF\]#ies", "the_if('$1', '$2', FALSE)", $text, -1, $count);