我在下面有一个过滤坏字代码 我想用.txt文件替换这个ARRAY,以便我可以将所有坏词放入txt文件中,或者有没有办法使用MYSQL数据库存储坏词然后从那里调用?
FUNCTION BadWordFilter(&$text, $replace){
$bads = ARRAY (
ARRAY("butt","b***"),
ARRAY("poop","p***"),
ARRAY("crap","c***")
);
IF($replace==1) { //we are replacing
$remember = $text;
FOR($i=0;$i<sizeof($bads);$i++) { //go through each bad word
$text = EREGI_REPLACE($bads[$i][0],$bads[$i][1],$text); //replace it
}
IF($remember!=$text) RETURN 1; //if there are any changes, return 1
} ELSE { //we are just checking
FOR($i=0;$i<sizeof($bads);$i++) { //go through each bad word
IF(EREGI($bads[$i][0],$text)) RETURN 1; //if we find any, return 1
}
}
}
$qtitle = BadWordFilter($wordsToFilter,1);
答案 0 :(得分:4)
我刚刚开发了一个可以过滤掉坏词的功能
function hate_bad($str)
{
$bad = array("shit","ass");
$piece = explode(" ",$str);
for($i=0; $i < sizeof($bad); $i++)
{
for($j=0; $j < sizeof($piece); $j++)
{
if($bad[$i] == $piece[$j])
{
$piece[$j] = " ***** ";
}
}
}
return $piece;
}
并称之为
$str = $_REQUEST['bad']; //'bad' is the name of the text field here
$good = hate_bad($str);
if(isset($_REQUEST['filter'])) //'filter' is the name of button
{
for($i=0; $i < sizeof($good); $i++)
{
echo $good[$i];
}
}
答案 1 :(得分:1)
你可以做任何一个......
您可以使用file_get_contents()
之类的内容从文件中读取内容,或使用MySQL API查询数据库中的错误字词。
您是否设置了数据库架构?此外,不推荐使用eregi_replace()
。请改用preg_replace()
。
答案 2 :(得分:0)
你可以使用MYSQL。
只需要一个包含两列的表:单词和替换。
然后在您的代码中,您将需要连接到数据库并读取每一行。但是,您可以将每一行存储在一个数组中。
结果与您当前的数组结构非常相似。
要连接数据库,请使用以下教程。 http://www.homeandlearn.co.uk/php/php13p1.html
答案 3 :(得分:0)
是的,像bad_words.txt一样创建一个带有条目的文件(注意每个单词组合在一个单独的行上):
butt,b***
poop,p***
crap,c***
然后将该文件读入如下数组:
$file_array = file('/path/to/bad_word.txt');
然后创建一个像$ bads数组一样的数组:
$bads = array();
foreach ($file_array as $word_combo) {
$bads[] = explode(',', $word_combo);
}
希望这有帮助。