使用 php 删除背景色


Removing background-color with php

我正在尝试使用 PHP 从字符串中删除背景颜色,为此我想使用正则表达式(在我看来,这是实现这一目标的最快方法)。

这是我所拥有的:

<span style="font-family: Arial, Narrow, sans-serif; background-color: rgb(25, 56, 92); color: rgb(170, 170, 170);">Parabéns! Você recebeu um pouco de sorte!&nbsp;<br></span>

我只想从样式属性中删除"背景颜色:{颜色值}"。但是,背景可以有不同的颜色,它可以是十六进制或 RGB()(在本例中)。

这是我创建的表达式,不幸的是,它不起作用:

 /background-color: ?('#[a-fA-F0-9]{3,6}|rgb'([0-9]{2,3},[0-9]{2,3},[0-9]{2,3}'))';/

我试图通过网络和堆栈溢出进行搜索,但我找不到这个特定问题的答案。

感谢您的关注。

使用 preg_replace() 和正则表达式。

$string = "background-color: #ffffff;";
$expression = "/background-color:(.*?);/";
$string = preg_replace($expression, '', $string);
var_dump($string);

输出:

string '' (length=0)

是的,这将删除带有 rgb(...) 值的字符串。它匹配背景色:和分号之间的任何内容。

但是,请认识到这方面的局限性。 它只会取代

background-color: value;

如果 HTML 代码可能使用背景:#ffffff 它将失败。

代码:

$s = '<span style="color: red; background-color: #fff; background-color: rgb(25, 56, 92); font: Arial;">text</span>';
$s = preg_replace('~background-color:.+?;'s*~', '', $s);
echo $s;

输出:

<span style="color: red; font: Arial;">text</span>