只替换字符串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演示和regex演示。

详细信息

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

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

最新更新