0

お問い合わせフォーム メッセージ内の不適切な単語のフィルタリングに問題があります。単語の最初の文字を除くすべてのメッセージを取り除きます。何か助けはありますか?

以下は情報を取得するだけです

<?php
$error = '';
if(!empty($_POST['username'])) $username = $_POST['username'];
if(!empty($_POST['email'])) $email = $_POST['email'];
if(!empty($_POST['subject'])) $subject = check($_POST['subject']);
if(!empty($_POST['message'])) $msg = filter($_POST['message']);

これは、悪い言葉を取り除いて置き換えるために使用しようとしている機能です

$bad_words = array(
'word1' => 'gosh',
'word2' => 'darn',);

 function filter($matches) {
 global $bad_words;
 $replace = $bad_words[$matches[0]];
 return !empty($replace) ? $replace : $matches[0];
 }

ドロップダウン オプションをチェックし、特定の件名へのメール送信を許可しません。

function check($str){
global $error;
if ($str == 'Mean Spirited Comment'){
  $error = 'You sent a Mean-Spirited Comment';
} else if ($str =='Political Comment'){
  $error = 'You sent a Political Comment';
}
 return $str;
}

情報を配置して送信する

$to = 'email@email.com';
 if (!empty($subject) && !empty($msg) && !empty($email) && !empty($username)){
if ($error == ''){
  mail($to, $subject, $msg, 'From:' . $email);
} else {
  print $error;
}
}

?>
4

1 に答える 1

0

配列を取ることができるので、 str_replace を使用できます。

例えば:

$message = "Hello there my good friends! I am very happy to see you all today even though I feel like crap.";
$badWords = array("Crap", "Damnit", "Frack");
echo str_replace($badWords, "*", $message);

結果は次のようになります。みたいな感じですが、今日は皆様にお会いできてとても嬉しいです*.

PHP はすでに多くの便利なメソッドを提供しているのに、なぜ新しいメソッドを再発明するのでしょうか? これは、送信されるメッセージから「悪い言葉」を取り除くのに十分なはずです。

于 2012-05-03T14:58:43.133 に答える