到目前为止,所有答复都谈到在扼杀词上的任何重复。 我认为,你只是想删除连续的同样措辞。 可在preg_replace
上填写:
$string = hello my name is blah blah and wats yours ;
$string = preg_replace( /(w+)(s+)\1s*/ , \1\2 , $string);
指出这一职能相当缓慢,因此将删除诸如“哈德”之类的有效短语。 也许你可以通过一个白色名单和preg_replace_questback
来围绕这一点开展工作。
仅重读你的问题,以前就错过了“只字”的界限。 你可以用黑字清单来做到这一点,但绝不能重复:
$string = hello my name is blah blah and wats yours. I had had a bad day ;
$string = preg_replace_callback( /(w+)(s+)\1s*/i , function($matches) {
$blacklist = array ( blah );
if (in_array(strtolower($matches[1]), $blacklist)) {
return $matches[1] . $matches[2];
} else {
return $matches[0];
}
}, $string);
// $string == "hello my name is blah and wats yours. I had had a bad day"
您可在<代码>黑名单/代码>上添加一个以上字。