php - 更改字符串php中括号内的所有文本颜色
问题描述
我正在尝试更改由括号或任何特殊字符标识的字符串中的文本颜色。假设我有这个字符串 -
$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);
解决方案
即使已经有了答案,让我分解一下您的正则表达式中的问题:
- 原始正则表达式中的字符类不包含
?
空格。它也不能包含标点符号或连字符。 - 外部括号没有转义,因此引擎将其解释为字符类(要匹配的有效字符列表),而不是您想要的“方括号之间的任何内容” ,然后引发语法错误。
- 您正在使用捕获组作为您的锚点(它之所以有效,是因为您在替换时将它们考虑在内,但并不是真正需要的)。
请参阅@simonw16 答案以获取正确的表达式。
推荐阅读
- angular - 角度的引导数组
- r - 如何修复 R 中印地语字符的条形图显示?
- typescript - TypeScript 通用函数 - 为数组应用函数时出现“参数不可分配错误”
- django-rest-framework - 我需要有关如何为每个用户创建一个表作为用户的联系人列表的帮助
- javascript - 打字稿在具有不同类型的数组中查找
- asp.net - ASP Web api 在本地机器上工作但不能在生产环境中工作
- css - Angular 5 - Material Snackbar 无法正常工作
- mysql - 当字段值与数字相乘时,MySQL选择错误的结果
- .net - .Net CAD 2014,自定义功能区菜单无法显示
- javascript - 我正在从 API 接收一些文本形式的数据,这些数据在 ReactJS 环境中嵌入了 HTML 标记。我想将该文本转换为 HTML