str_replace > strtr > preg_replace
测试代码如下:
$keywords = array('小王', '开车', '菲律宾', '放松', '一下', '要不要');
$str = "老李对小王说下班后开车去机场,要去菲律宾长滩岛,好好地放松休息一下,要不要一起去";
echo $str . '<br>';
echo str_replace($keywords, '***', $str) . '<br>';
echo strtr($str, array_fill_keys($keywords, '***')) . '<br>';
$keywords2 = array('/小王/', '/开车/', '/菲律宾/', '/放松/', '/一下/', '/要不要/');
echo preg_replace($keywords2, '***', $str) . '<br>';
$start = microtime(true);
for ($i=0; $i<100000; $i++) {
str_replace($keywords, '***', $str);
}
echo 'str_repace:' . (microtime(true) - $start) . 's<br>';
$rep = array_fill_keys($keywords, '***');
$start = microtime(true);
for ($i=0; $i<100000; $i++) {
strtr($str, $rep);
}
echo 'strtr:' . (microtime(true) - $start) . 's<br>';
$start = microtime(true);
for ($i=0; $i<100000; $i++) {
preg_replace($keywords2, '***', $str);
}
echo 'preg_replace:' . (microtime(true) - $start) . 's<br>';
结果如下:
老李对小王说下班后开车去机场,要去菲律宾长滩岛,好好地放松休息一下,要不要一起去
老李对***说下班后***去机场,要去***长滩岛,好好地***休息***,***一起去
老李对***说下班后***去机场,要去***长滩岛,好好地***休息***,***一起去
老李对***说下班后***去机场,要去***长滩岛,好好地***休息***,***一起去
str_repace:0.48921489715576s
strtr:0.67480778694153s
preg_replace:1.1006908416748s