从字符串中删除特定单词

Y K*_*Kal 12 php

我想从字符串中的任何字符串中删除整个单词.

我创建了一系列禁词:

$wordlist = array("or", "and", "where", ...)
Run Code Online (Sandbox Code Playgroud)

现在我删掉这些词:

foreach($wordlist as $word)
$string = str_replace($word, "", $string);
Run Code Online (Sandbox Code Playgroud)

问题是上面的代码还会删除包含"sand"或"more"等禁用词的单词.

cmb*_*ley 21

为此,您可以使用preg_replace和单词边界:

$wordlist = array("or", "and", "where");

foreach ($wordlist as &$word) {
    $word = '/\b' . preg_quote($word, '/') . '\b/';
}

$string = preg_replace($wordlist, '', $string);
Run Code Online (Sandbox Code Playgroud)

编辑:示例.


Ste*_*ver 7

str_replace还支持数组的输入.这意味着您可以通过以下方式使用它:

str_replace(array("word1", "word2"), "", $string);
Run Code Online (Sandbox Code Playgroud)

这意味着数组中存在的所有单词都将被空字符串替换.如果您想要特定的替换,您也可以创建一个替换数组.

要删除设置中的正确单词,我建议在"或"和"where"周围添加空格.因为你只会删除真实的单词,而不是单词的一部分.

我希望这有帮助.

  • @NomikOS阅读了帖子的后半部分. (2认同)