正则表达式无法捕捉[...] [...]内的值

sta*_*een 1 php regex preg-replace

我正在尝试更改字符串中文本的颜色:

我的字符串:

$message="I have a [red][car]";
Run Code Online (Sandbox Code Playgroud)

我想捕获第一个[...]和第二个[...]内的值,然后使用它

<b style='color:color'>car</b>
Run Code Online (Sandbox Code Playgroud)

根据第一个[...]的值更改文本颜色

到目前为止,我有:

echo preg_replace("/\[([^\]]+)\]\[([^\]+])\]/i","<b style='color:$1'>$2</b>",$message);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,orignal字符串作为输出返回.我不知道我的正则表达式失败了.

请帮忙!

Wik*_*żew 6

纠正的正则表达式是:

'/\[([^\]]+)]\[([^\]]+)]/'
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

请注意,您不必]在字符类之外转义,也不需要/i修饰符,因为模式中没有字母.此外,要正确转义特殊的正则表达式字符,您需要在双引号字符串中双重转义,或使用单引号字符串.

IDEONE演示:

$message="I have a [red][car]";
echo preg_replace('/\[([^\]]+)]\[([^\]]+)]/',"<b style='color:$1'>$2</b>",$message);
// => I have a <b style='color:red'>car</b>
Run Code Online (Sandbox Code Playgroud)