将 [ 和 ] 替换为 <b> 和 <b>

Replacing [ and ] with <b> and <b>

我正在尝试将 [ 和 ] 转换为

字符串

  $str="I don't [wanna] be a bus [driver] all my [life]";

我想要这个输出

I don't <b>wanna</b> be a bus <b>driver</b> all my <b>life</b> 

[] 中的任何单词都应该是 粗体

到目前为止,这是我的代码:

     $str="I don't [wanna] be a bus [driver] all my [life]";
   echo preg_replace("#[]#","<b></b>",$str);

但它不起作用,它 returns 字符串原样

  I don't [wanna] be a bus [driver] all my [life]

有什么想法吗?谢谢

试试这个:

 $str="I don't [wanna] be a bus [driver] all my [life]";
 $pattern=array();
 $pattern[0]="/\[/";
 $pattern[1]="/\]/";
 $replacement=array();
 $replacement[0]="<b>";
  $replacement[1]="</b>";
  echo preg_replace($pattern,$replacement,$str);

查看实际效果 here

如上所述,该问题不需要正则表达式:

print strtr($str, [
    '[' => '<b>',
    ']' => '</b>',
]);

如果你还想要正则表达式,它是这样的:

print preg_replace(
    '~\[(.+?)\]~',
    "<b></b>",
    $str);

括号被转义,因为它们在正则表达式中有特殊含义。在替换字符串中,</code> 表示第一个捕获的组 <code>(.+).

你可以用一张 preg_replace。

你可以在这里测试https://regex101.com/r/sZ6tJ7/1

并查看生成的 PHP 代码:

$re = "/(\[)([^\]]*)(\])/"; 
$str = "I don't [wanna] be a bus [driver] all my [life]"; 
$subst = "<b></b>"; 

$result = preg_replace($re, $subst, $str);
$str="I don't [wanna] be a bus [driver] all my [life]";
$pattern=array("/\[/","/\]/");
$replacement=array("<b>","</b>");
echo $output = preg_replace($pattern,$replacement,$str);