Php 正则表达式无法捕获[…][…]内的值
我正在尝试更改字符串中文本的颜色:Php 正则表达式无法捕获[…][…]内的值,php,regex,preg-replace,Php,Regex,Preg Replace,我正在尝试更改字符串中文本的颜色: $message="I have a [red][car]"; 我的字符串: $message="I have a [red][car]"; 我想捕获第一个[…]和第二个[…]中的值,然后在中使用它 <b style='color:color'>car</b> 汽车 根据first[…]的值更改文本颜色 到目前为止,我已经: echo preg_replace("/\[([^\]]+)\]\[([^\]+])\]/i","<
$message="I have a [red][car]";
我的字符串:
$message="I have a [red][car]";
我想捕获第一个[…]和第二个[…]中的值,然后在中使用它
<b style='color:color'>car</b>
汽车
根据first[…]的值更改文本颜色
到目前为止,我已经:
echo preg_replace("/\[([^\]]+)\]\[([^\]+])\]/i","<b style='color:$1'>$2</b>",$message);
echo preg\u replace(“/\[([^\]+)\]\[([^\]+])\]/i“,“$2”,“$message”);
但它不工作,原始字符串作为输出返回。我不知道我的正则表达式在哪里失败了
请帮忙 修正后的正则表达式为:
'/\[([^\]]+)]\[([^\]]+)]/'
看
注意,您不必在字符类之外转义]
,也不需要在/i
修改器中转义,因为模式中没有字母。此外,要正确转义特殊的正则表达式字符,您需要在双引号字符串中进行双转义,或者使用单引号字符串
:
$message=“我有一辆[红色][汽车]”;
回显preg\u replace('/\[([^\]]+)]\[([^\]]+)]]/'、“$2”、$message);
//我有一辆车
正确的正则表达式是:
'/\[([^\]]+)]\[([^\]]+)]/'
看
请注意,您不必在字符类之外转义]
,也不需要在/i
修饰符中转义,因为模式中没有字母。此外,要正确转义特殊的正则表达式字符,您需要在双引号字符串中进行双转义,或者使用单引号字符串
:
$message=“我有一辆[红色][汽车]”;
回显preg\u replace('/\[([^\]]+)]\[([^\]]+)]]/'、“$2”、$message);
//我有一辆车
您放错了]
:使用'/\[([^\]+)\]\[([^\]+)\]/'
您放错了]
:使用'/\[([^\]+)\]\[([^\]+)\]\[([^\]]+)\]/'