用<b>和<b> </b> </b>替换[和]

时间:2015-03-14 16:12:05

标签: php regex preg-replace

我正在尝试将[和]转换为&lt; b&gt;和&lt; / b&gt;

的字符串

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

但它不起作用,它返回字符串

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

有什么想法吗?感谢

4 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:1)

您可以使用一个preg_replace执行此操作。

您可以在此处https://regex101.com/r/sZ6tJ7/1

进行测试

并查看生成的PHP代码:

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

$result = preg_replace($re, $subst, $str);

答案 2 :(得分:1)

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

答案 3 :(得分:0)

试试这个:

 $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

中查看此内容