PHP使用';性格

PHP使用';性格,php,regex,preg-replace,word-boundary,Php,Regex,Preg Replace,Word Boundary,我正在尝试从字符串中删除干扰词,我有一个我认为是很好的算法,但我遇到了一个障碍。在我进行preg_替换之前,我删除了除撇号(')之外的所有标点符号。我通过这个preg_替换: $content = preg_replace('/\b('.implode('|', self::$noiseWords).')\b/','',$content); 这很有效,除了那些确实具有“个性”的词。preg_replace似乎将其视为边界角色。这对我来说是个问题 有什么办法可以让我绕过这件事吗?也许有不同的解决

我正在尝试从字符串中删除干扰词,我有一个我认为是很好的算法,但我遇到了一个障碍。在我进行preg_替换之前,我删除了除撇号(')之外的所有标点符号。我通过这个preg_替换:

$content = preg_replace('/\b('.implode('|', self::$noiseWords).')\b/','',$content);
这很有效,除了那些确实具有“个性”的词。preg_replace似乎将其视为边界角色。这对我来说是个问题

有什么办法可以让我绕过这件事吗?也许有不同的解决方案

谢谢

下面是我正在使用的示例:

$content = strtolower(strip_tags($content));
    $content = preg_replace("/(?!['])\p{P}/u", "", $content);// remove punctuation
    echo $content;// i've added striptags for editing as well should still workyep it doesnbsp

    $content = preg_replace("/\b(?<')(".implode('|', self::$noiseWords).")(?!')\b/",'',$content);

    $contentArray = explode(" ", $content);

    print_r($contentArray);

您可以使用负向后看和正向前看来确保您没有“围绕”引号字符:

$regex = "/\b(?<!')(".implode('|', self::$noiseWords).")(?!')\b/";

$regex=“//\b(?我这样做了:
$content=strtolower(strip_tags($content));$content=preg_replace(“/(?![”))\p{p}/u”,“”,$content);//删除标点$content=preg_replace(//\b(?在你做任何事情之前,你能用
$content
中的内容样本编辑你的问题吗?假设
I
是你的一个干扰词,它看起来对我有用。-。嗯,是的,它似乎在那里起作用。但是,在我的浏览器中,当我运行脚本时,我什么也得不到。即使在分解之前只是回显$content,它也是如此在你的第二个链接中有一个空字符串:它对我来说不匹配。不工作。
$regex = "/\b(?<!')(".implode('|', self::$noiseWords).")(?!')\b/";