我目前正在尝试在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中实现条件运算符。请帮忙! :)谢谢!
答案 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);