1

笑われるかもしれませんが、実際には、これはほとんどのアプリで共通のニーズです。顧客/訪問者の入力を受け入れる多くのアプリでは、汚い言葉や下品な言葉をフィルタリングする必要がある場合があります。

ときどき PHP が変更され、新しいものが追加されます。たとえば、つい先日、PHP5 の MultiCurl API について学びました。とにかく、PHP に新しいネイティブ関数があり、文字列内の最も一般的な英語ベースの cuss 単語をフィルタリングできるだけでなく、ブール値を反転して「文字列に英語ベースの cuss 単語が含まれている」と言うことができますか? もちろん、完璧である必要はありませんが、かなりのゴミを切り取って、たとえば ### に置き換えてみましょう。

それがまだPHPの一部ではない場合、誰かが私が使用できる関数を持っていますか? たとえば、クラスをプロジェクトにドロップでき、別のプログラマーが気分を害することを心配する必要がないようにしたいと考えています。言い換えれば、適切にエンコードされた cuss 単語リストであり、実際に綴られたものではありません。

さて、明らかに柔軟で、「反論」などの言葉が通用する必要があります。

tl;dr : PHP5 には、わいせつな単語をフィルタリングできるネイティブ機能が追加されましたか? そうでない場合、他のプログラマーを怒らせないように、くだらない単語リストをエンコードするクラスを持っている人はいますか?

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')。

編集 悪い単語の内側の良い単語の問題については、正規表現に追加して、悪い単語の最初と最後にスペースを要求することができます。ただし、提出物が多い場合は、荒らしについていくための絶え間ない戦いになるでしょう.

于 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 に答える