str替换为掩码文本

时间:2016-01-27 15:03:44

标签: php string str-replace

我有一些文字,我需要删除前面的代码,我使用这样的很多变种:

$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函数,可以通过一些掩码删除这个文本?

2 个答案:

答案 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()代替

相关问题