我正在尝试更改由方括号或与此相关的任何特殊字符标识的字符串中的文本颜色。说我有此字符串-
$text = 'Hello [how are you?]';
如何更改方括号中文本的颜色?
我尝试了preg_match,但操作不正确。
$new_text = preg_replace('/(^|\s+)[([0-9a-zA-Z]+)](\b|$)/', '$1<span style="color:red;">#$2</span>', $text);
答案 0 :(得分:2)
您只需要一个简单的正则表达式即可。 [+任何字符+]。而且,您只需要替换括号中的内容,即可使用()捕获组来封装可变文本。
$new_text = preg_replace('/\[([^\]]+)\]/', '<span style="color:red;">$1</span>', $text);
编辑:
修改了正则表达式。我会匹配所有内容,直到第一次出现]
]
)
最好还是在评论中使用@msg表示:正则表达式可以是:/\[(.*?)\]/
答案 1 :(得分:2)
即使已经有了答案,我也要解决您的正则表达式中的问题:
?
或空格。它也不能包含标点符号或连字符。有关正确的表达式,请参见@simonw16 answer。