1

以下に不正な単語のコードをフィルターします。この配列を.txtファイルに置き換えて、すべての不正な単語をtxtファイルに入れることができます。または、MYSQLデータベースを使用してbwordwordを保存し、そこから呼び出す方法はありますか。 ?

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); 
4

4 に答える 4

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];
    }
}
于 2013-02-04T06:53:05.647 に答える
1

あなたはどちらかを行うことができます...

file_get_contents()ファイルから読み込むようなものを使用したり、 MySQL APIを使用してデータベースに不適切な単語をクエリしたりできます。

データベーススキーマを設定していますか? また、eregi_replace()非推奨です。preg_replace()代わりに使用してください。

于 2012-07-17T13:46:23.837 に答える
1

はい、次のようなエントリを含む bad_words.txt のようなファイルを作成します (各単語の組み合わせは別の行にあることに注意してください)。

butt,b***
poop,p***
crap,c***

次に、そのファイルを次のように配列に読み込みます。

$file_array = file('/path/to/bad_word.txt',FILE_IGNORE_NEW_LINES);

次に、 $bads 配列のような配列を作成するには、次のようにします。

$bads = array();
foreach ($file_array as $word_combo) {
    $bads[] = explode(',', $word_combo);
}

お役に立てれば。

于 2012-07-17T13:48:31.160 に答える
0

MYSQLを使用できます。

単語と置換の2つの列を持つテーブルを用意するだけです。

次に、コードでデータベースに接続し、各行を読み取る必要があります。ただし、各行を配列に格納できます。

結果は、現在の配列構造と非常によく似ています。

データベースに接続するには、以下のチュートリアルを使用してください。 http://www.homeandlearn.co.uk/php/php13p1.html

于 2012-07-17T13:43:43.580 に答える