1

我知道你可能会笑,但实际上这是大多数应用程序的共同需求。许多接受客户/访客输入的应用程序可能需要过滤脏话或粗俗术语。

有时 PHP 会发生变化并添加新的东西。例如,就在前几天我了解了 PHP5 中的 MultiCurl API。那么,无论如何,PHP 中是否有一个新的原生函数可以让我过滤字符串中最常见的基于英语的 cuss 词,以及翻转一个布尔值来表示“字符串中包含基于英语的 cuss 词”?显然,它不需要完美,但剪掉一些垃圾,让我用###替换它。

如果这还不是 PHP 的一部分,那么有没有人可以使用一个函数来隐藏 cuss 单词列表?例如,我希望这样我可以在项目中删除该类,而不必担心其他程序员会被冒犯。换句话说,一个体面编码的 cuss 单词列表——实际上并没有拼写出来。

现在,显然它需要灵活,让“反驳”之类的词通过。

tl;dr : PHP5 现在有可以过滤淫秽词的原生函数吗?如果没有,有没有人有一个类来编码一个 cuss 单词列表,这样它就不会冒犯其他程序员?

4

2 回答 2

1

我怀疑这对于核心 PHP 团队来说是一个高度优先的事情,因为它危险地接近审查制度。审查,因为他们将有一个“不适当”语言的“主”列表,应该被过滤掉。

你可以很简单地做到这一点。组成一个包含您要过滤掉的所有单词的数组,当显示包含用户输入的页面时,preg_filter()对这些单词运行 a。

$bad_words = array('bleeping', 'blooping'); $submitted_text = '废话……';

echo preg_filter($bad_words, $replace, $submitted_text);

注意:您将不得不处理坏词可能在好词中的边缘情况(即 - 'shitzu[sic] dog')

编辑 对于 bad-words-inside-good-words 问题,您可以添加到正则表达式以在坏词的开头和结尾处需要空格。但是,如果您有很多提交内容,那么要跟上巨魔的步伐将是一场持续的战斗。

于 2011-02-05T06:21:56.780 回答
0
<?php
$badwords = "fuc";
$replacebad = "****"; 
$string = $_POST['something']; 
$filtered = str_ireplace($badwords, $replacebad, "$string");
echo $filtered;
?>

像这样的东西?编辑:对不起,我没有注意到 php5 部分..

于 2011-02-05T06:20:59.417 回答