我想从字符串中的任何字符串中删除整个单词.
我创建了一系列禁词:
$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)
编辑:示例.
str_replace还支持数组的输入.这意味着您可以通过以下方式使用它:
str_replace(array("word1", "word2"), "", $string);
Run Code Online (Sandbox Code Playgroud)
这意味着数组中存在的所有单词都将被空字符串替换.如果您想要特定的替换,您也可以创建一个替换数组.
要删除设置中的正确单词,我建议在"或"和"where"周围添加空格.因为你只会删除真实的单词,而不是单词的一部分.
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
29487 次 |
| 最近记录: |