带有Preg_Replace PHP的条件运算符

时间:2015-06-11 00:50:16

标签: javascript php regex

我目前正在尝试在PHP中编写 Preg_Replace ,并进行"替换" param a Conditional(Ternary Operator)。问题是,我无法让这个工作。我正在使用Javascript将BBCode Parser转换为PHP,但它没有按计划进行。

这是我想要做的一个例子。这个正则表达式在JS中完美运行,据我所知,这个也适用于PHP。我认为它正在讨论"替换" PARAM。我不知道如何让三元运营商在那里工作。有任何想法吗?以下是代码的示例:

$string = "[b]This Matches, and Replaces[/b]";
$string = preg_replace("/(\[code\][\s\S]*?\[\/code\])|\[b\]([\s\S]*?)\[\/b\]/i", "$1 ? $1 : '<b>' + $2 + '</b>'", $string);

我的问题是,如何在使用Regex匹配组的Preg_Replace中实现条件运算符。请帮忙! :)谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用preg_replace_callback(),下面是一个示例:

$str = preg_replace_callback('~(\[code].*?\[/code])|\[b](.*?)\[/b]~si',
     function($m) { 
        return isset($m[2]) ? "<b>$m[2]</b>" : $m[1];
      }, $str);