0

広告を掲載するサイトを運営していますが、キャンペーン (広告) を追加するセクションで、キャンペーン タイトルから特定の悪い言葉を防ぐ必要があります。そのため、広告主がキャンペーンを追加するときにそれらのタイトルを確認しました。これらの悪い言葉は、txt 形式でファイルに保存されます。このコードを使用しました。

$string = $description;

$badwords = file( "badwords.txt" );
if ( $badwords ) { 
  foreach ( $badwords as $line ) {  
    if ( preg_match("/$line/", $string) ) { 
      echo $string; die();
      return array ( 0, $language['bad_words_error'] );
    }
  }
}

試しin_array()ましたが、 の内容と一致しません$string

if ( in_array($string, $badwords) ) { 
  echo "The word ".$string ." is a bad keyword"; 
}
4

2 に答える 2

2

通常、問題はファイルに残っている末尾のスペースが原因です。

これを解決するにはtrim()、個々$lineの で使用します。

于 2012-07-21T07:53:12.823 に答える
0
foreach ($badwords as $word) {
  if (preg_match("/\b$word\b/", $string)) {
    echo $string . ' contains bad word ' . $value;
  }
}

txt ファイルには、1 行に 1 つの不適切な単語が含まれていると想定しています。また、正規表現パターンを破損する可能性のある文字が悪い単語に含まれないように注意してください。

于 2012-07-21T07:47:08.727 に答える