具有Preg_Replace PHP 的条件运算符


Conditional Operator With Preg_Replace PHP

我目前正在尝试用PHP编写一个Preg_Replace,并使"替换"参数成为条件(三元运算符)。问题是,我无法让它工作。我正在将BBCode Parser从Javascript转换为PHP,但它没有按计划进行。

这是我正在尝试做的事情的一个例子。这个正则表达式在 JS 中可以完美运行,据我了解,这个正则表达式也可以在 PHP 中工作。我认为它遇到了"替换"参数的问题。我不知道如何让三元运营商在那里工作。有什么想法吗?下面是一段代码的示例:

$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);

我的问题是,如何将条件运算符实现到使用正则表达式中的匹配组的Preg_Replace中。请帮忙!:)谢谢!

您可以使用

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);