我正在尝试将[和]转换为< b>和< / 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);
但它不起作用,它返回字符串
I don't [wanna] be a bus [driver] all my [life]
有什么想法吗?感谢
答案 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
中查看此内容