仅替换字符串 php 中特定标签的引号

问题描述

在这样的字符串中

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 demoregex demo

详情

  • (<[^>]*\sstyle=) - 第 1 组:<,然后是除 > 之外的任何零个或多个字符,然后是空格和 style= 字符串
  • " - 双引号
  • ([^"]+) - 第 2 组:除 " 之外的任何一个或多个字符
  • " - " 字符
  • ([^>]*>) - 第 3 组:除 >> 字符之外的任何零个或多个字符。

请注意,我们需要保留的部分周围有三个捕获组,双引号留在捕获组之外,以便可以替换/删除它们。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...