问题描述
在这样的字符串中
Améliorer <span style="color:black;">mon authentification</span>
我正在尝试替换它
style="color:black;"
与
style= \ "color:black; \ "
我正在尝试像这样使用 preg_replace
$result = preg_replace('/(<*[^>]*style=)"[^>]+"([^>]*>)/','\1\"300\"\2',$data);
但是这样我只改变了样式属性的内容,而内容应该保持不变。
我只需要在 style 属性上更改它,因为我需要在字符串中保留一些双引号(所以我不能 str_replace)
谢谢
解决方法
你可以使用
$data = 'Améliorer <span style="color:black;">mon authentification</span>';
echo preg_replace('/(<[^>]*\sstyle=)"([^"]+)"([^>]*>)/','\1\"\2\"\3',$data);
参见 PHP demo 和 regex demo。
详情:
-
(<[^>]*\sstyle=)
- 第 1 组:<
,然后是除>
之外的任何零个或多个字符,然后是空格和style=
字符串 -
"
- 双引号 -
([^"]+)
- 第 2 组:除"
之外的任何一个或多个字符 -
"
-"
字符 -
([^>]*>)
- 第 3 组:除>
和>
字符之外的任何零个或多个字符。
请注意,我们需要保留的部分周围有三个捕获组,双引号留在捕获组之外,以便可以替换/删除它们。