我正在尝试使用 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! <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>