我正在尝试更改字符串中文本的颜色:
我的字符串:
$message="I have a [red][car]";
我希望捕获第一个 [...] 和第二个 [...] 中的值,然后在
中使用它<b style='color:color'>car</b>
根据第一个 [...]
的值更改文字颜色到目前为止,我有:
echo preg_replace("/\[([^\]]+)\]\[([^\]+])\]/i","<b style='color:$1'>$2</b>",$message);
但它不起作用,orignal字符串作为输出返回。我不知道我的正则表达式失败了。
请帮忙!
答案 0 :(得分:6)
更正的正则表达式是:
'/\[([^\]]+)]\[([^\]]+)]/'
请参阅regex demo
请注意,您不必在角色类之外转义]
,也不需要/i
修饰符,因为您的模式中没有字母。此外,要正确转义特殊正则表达式字符,您需要在双引号字符串中双重转义,或使用单引号字符串。
$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>
答案 1 :(得分:1)
$message="I have a [red][car]";
echo preg_replace("/[^\[]+\[([^\]]+)\]\[([^\]]+)\]/i","<b style='color:$1'>$2</b>",$message);