我需要反复删除文章中的某些停用词.目前我正在使用函数str_replace来实现这一目标.作为第一个参数,我使用停止列表数组变量来删除任何停用词的出现.这样可以正常工作,除了它还删除了在单词中间发生的任何匹配(即,如果停用词是"th",它将从"the","then"等中删除"th".
现在,如果我使用纯文本提供参数,我可以在单词的任一侧添加一个空格来纠正这种情况.但是,由于我使用的是变量数组,因此无效.我也尝试使用concatenate运算符,但这似乎不是函数内部的合法连接器.
当前代码看起来像这样:
$i = str_replace(" " . $swarray . " ", $string );
Run Code Online (Sandbox Code Playgroud)
您需要使用preg_replace单词边界.例如下面我们只替换单词的the同时避免更换them或then等
$string = preg_replace('/\bthe\b/', '', $string);
Run Code Online (Sandbox Code Playgroud)
preg_replace 和 array
$find = array('/\bth\b/', '/\bthe\b/', '/\bthen\b/');
$replace = array('', '', '');
echo $i = preg_replace($find, $replace, $string);
Run Code Online (Sandbox Code Playgroud)
$find = array('/\bth\b/', '/\bthe\b/', '/\bthen\b/');
echo $i = preg_replace($find, "", $string);
Run Code Online (Sandbox Code Playgroud)
正则匹配文档:http : //www.php.net/manual/en/function.preg-replace.php#89364
\b Match a word boundary
Run Code Online (Sandbox Code Playgroud)