我有一些文字,我需要删除前面的代码,我使用这样的很多变种:
$answer = str_replace('<td style="background-color:#80F9CC;">', '', $answer);
$answer = str_replace('<td style="background-color:#E1E3E4;">', '', $answer);
$answer = str_replace('<td style="background-color:#D1D3D4;">', '', $answer);
$answer = str_replace('<td style="background-color:#73F6AB;">', '', $answer);
$answer = str_replace('<td style="background-color:#3CEB88;">', '', $answer);
有没有办法创建一个str_replace函数,可以通过一些掩码删除这个文本?
答案 0 :(得分:7)
preg_replace()
是您需要的功能。
假设你想要识别和替换颜色的十六进制表示,代码就是这样的:
$answer = preg_replace('/<td style="background-color:#[0-9A-F]{6};">/i', '', $answer);
i
PCRE modifier告诉preg_replace
忽略字符大小写。
仅在颜色代码包含正好6个十六进制数字时才识别和替换。为了使用3-digit RGB notation识别颜色代码,您需要将[0-9A-F]{6}
的{{1}}部分更改为regexp
。或者使用一个更简单的表达式,匹配3到6位数之间的所有颜色代码:[0-9A-F]{3}([0-9A-F]{3})?
您还可以在冒号([0-9A-F]{3,6}
)之后添加\s*
,以便在:
部分之后存在一个或多个空格时使其匹配。
更新的代码是:
background-color:
但是,如果您只想匹配某些颜色,则可以将颜色代码分隔为$answer = preg_replace(
'/<td style="background-color:\s*#[0-9A-F]{3,6};">/i', '', $answer
);
代替:
|
正则表达式片段的简短说明:
$answer = preg_replace(
'/<td style="background-color:\s*#(80F9CC|E1E3E4|D1D3D4|73F6AB|3CEB88);">/i',
'',
$answer
);
答案 1 :(得分:3)
str_replace()可以将数组作为参数:
$replace_array = [
'<td style="background-color:#80F9CC;">',
'<td style="background-color:#E1E3E4;">',
'<td style="background-color:#73F6AB;">',
'<td style="background-color:#3CEB88;">',
];
$answer = str_replace($replace_array, '', $answer);
或者您可以使用preg_replace()代替