目次
ディスカッションへの返信 (解決策)
ホームページ バックエンド開発 PHPチュートリアル 掲示板コンテンツ内の未開な言葉のフィルタリングの問題

掲示板コンテンツ内の未開な言葉のフィルタリングの問題

Jun 23, 2016 pm 01:55 PM
コンテンツ 伝言板 フィルター

タイトル通りです。

これで、未開の単語は配列になりました。掲示板のコンテンツを作成した後、この未開の単語の配列を使用して、掲示板のコンテンツに一致するものがあるかどうかを 1 つずつ確認する必要があります。その場合は、プロンプトを出します。野蛮な単語をフィルタリングする効果を実現する方法に苦労しています


ディスカッションへの返信 (解決策)

まず、汚い単語のパッケージ (データベース、または配列形式) が必要です。その後定期的に交換を繰り返します。

function filterWd($content){    $fn = "common/filterword.txt";    $fd = fopen($fn, "rb");    if(file_exists($fn)){        $fw = array();        while(!feof($fd)){            $fw[] = fgets($fd);        }        for($i = 0; $i < count($fw); $i++){            $srs = stripos($content, $fw[$i]);            if($srs = false){                echo "error";            }else{                echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入";                break;            }        }    }else{        echo null;    }}filterWd("你妹的找死啊");
ログイン後にコピー


たとえば、filterword.txt には、「未開、あなたの妹、死を求めている」「エコー」という 3 つの単語が含まれています。「入力した内容には、未開の単語 '$fw[$i]' が含まれています。再入力してください。」 ;" この出力行 「非文明」という言葉が常に使用されます。これをどう判断すればよいでしょうか?

12 行目の if($srs = false){
12 行目の if($srs == false){ に変更します

12 行目の if($srs = false){
if($srs == false) に変更します{



さて、変更しましたが、まだ機能しないと思います。しかし、後でフィルタリングする単語を変更したところ、それらを見つけることができました。ここで再び疑問が生じます。なぜいくつかの単語が存在するのに検出されないのでしょうか。

function filterWd($content){		$fw = array("不文明", "去你的");		for($i = 0; $i < count($fw); $i++){			$srs = stripos($content, $fw[$i]);			if($srs == false){				echo "error 第" . $i . "次<br />";			}else{				echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入";				break;			}		}	}filterWd("不文明啊去你的");输出:error 第0次您输入的内容包含不文明用语'去你的',请重新输入//为什么不首先检测到“不文明”呢?
ログイン後にコピー

など、最初に見つけた後に見るのをやめた(休憩した)ことはありませんか?

最初の「uncivilized」は false に等しくない 出力: 入力した内容には、野蛮な単語「fuck you」が含まれています。再入力してください。そしてまた切断
そうあるべきではないでしょうか?なぜ切断するために 2 番目の「fuck you」にジャンプするのですか

出現順序は辞書の順序によって決まります
トライアルゴリズム (エッセンスエリアで利用可能) を使用すると、入力テキストの順序でチェックできます

よくわかりませんが、つい最近触れたばかりです

あなたのアルゴリズムは、辞書を走査し、辞書の単語がテキスト内に出現するかどうかを 1 つずつチェックすることです

つまり、どのくらいの大きさか辞書は、何回チェックする必要があるかです

そして、トライアルゴリズムは次のとおりです: テキストを単語ごとにスキャンし、回で構成される単語が辞書に含まれているかどうかを確認します
テキストを 1 回スキャンするだけで、既存の辞書の単語がすべて見つかります

こんなことを言われても、分かりません。 strstr() を変更することでこの問題を解決しました。 strstr() は全文検索にする必要があります


単一の文字列を使用してテキストを取得する場合は、strpos() の方が効率的です。


if($srs === false){ という文を取得するための配列でもあります。
echo "error". $i. "times
"

//投稿者はマニュアルを注意深く読む時間です。


if($srs === false){
echo "入力した内容には「$ fw [$ i] 」を再入力してください ";
// 家主はそうすべきです良いようです。


有一个我真的不明白,读取文件得来的 存到数组里面
运行到这步
(在下面这行代码之前我运行过 echo $fw[0....9])都是有结果的)
$srs = stristr($content, $fw[$i]); //到这行就是 false 了

返回值永为 false ;

实在让人费解

用var_dump();分别输出一下两个值看看。

var_dump() 也度过了, 只要是过了 $srs = stristr($content, $fw[$i]); 输出的全都是 false

function filterWd($content){        $fw = array("天堂", "地狱", "找死", "你妹的", "不文明");        for($i = 0; $i < count($fw); $i++){            $srs = stristr($content, $fw[$i]);            if($srs !== false){                echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入<br>";                //break;            }        }    }filterWd("不文明啊去你的天堂找死");
ログイン後にコピー
ログイン後にコピー
您输入的内容包含不文明用语'天堂',请重新输入
您输入的内容包含不文明用语'找死',请重新输入
您输入的内容包含不文明用语'不文明',请重新输入

之前写了个php替换敏感字符的类,有白名单和黑名单。
黑名单的会替换为*。

可以参考一下: http://blog.csdn.net/fdipzone/article/details/8486985

function filterWd($content){        $fw = array("天堂", "地狱", "找死", "你妹的", "不文明");        for($i = 0; $i < count($fw); $i++){            $srs = stristr($content, $fw[$i]);            if($srs !== false){                echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入<br>";                //break;            }        }    }filterWd("不文明啊去你的天堂找死");
ログイン後にコピー
ログイン後にコピー
您输入的内容包含不文明用语'天堂',请重新输入
您输入的内容包含不文明用语'找死',请重新输入
您输入的内容包含不文明用语'不文明',请重新输入


我知道这样是可以。如果数组是读取文件得来的就不行

你读文件时没有去掉换行符

$fn = "common/filterword.txt";$fd = fopen($fn, "rb");if(file_exists($fn)){   $fw = array();   while(!feof($fd)){     $fw[] = trim(fgets($fd));   }}print_r($fw);
ログイン後にコピー

干脆这样
$fn = "common/filterword.txt";$fw = file($fn, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);print_r($fw);
ログイン後にコピー

过滤的话...可不可以不提示直接和谐后发布?

echo str_replace($脏话数组, , $content);


还真的是这样,去掉  空格  换行符   就可以了 

$fw[] = trim(fgets($fn));  

然后再检索   strstr($content,$fw[$i]);   

这样就可以了

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iPhone で機密コンテンツの警告を有効にし、その機能について学ぶ方法 iPhone で機密コンテンツの警告を有効にし、その機能について学ぶ方法 Sep 22, 2023 pm 12:41 PM

特に過去 10 年間で、モバイル デバイスは友人や家族とコンテンツを共有する主な手段となりました。アクセスしやすく使いやすいインターフェイスと、画像やビデオをリアルタイムでキャプチャできる機能により、コンテンツの作成と共有に最適です。ただし、悪意のあるユーザーがこれらのツールを悪用して、閲覧に適しておらず、ユーザーの同意を必要としない不要な機密コンテンツを転送することは簡単です。これを防ぐために、iOS17では「センシティブコンテンツ警告」という新機能が導入されました。それとiPhoneでの使用方法を見てみましょう。新しい機密コンテンツに関する警告とは何ですか?またその仕組みは何ですか?前述したように、機密コンテンツの警告は、ユーザーが iPhone などの機密コンテンツを閲覧できないように設計された新しいプライバシーおよびセキュリティ機能です。

Microsoft Edge ブラウザーを 360 ナビゲーションで開くように変更する方法 - 360 ナビゲーションで開くように変更する方法 Microsoft Edge ブラウザーを 360 ナビゲーションで開くように変更する方法 - 360 ナビゲーションで開くように変更する方法 Mar 04, 2024 pm 01:50 PM

Microsoft Edge ブラウザーを開くページを 360 ナビゲーションに変更するにはどうすればよいですか? それは実際には非常に簡単なので、ここで Microsoft Edge ブラウザーを開くページを 360 ナビゲーションに変更する方法を共有します。見てください。皆さんのお役に立てれば幸いです。 Microsoft Edgeブラウザを開きます。以下のようなページが表示されます。右上隅にある三点アイコンをクリックします。 「設定」をクリックします。設定ページの左欄にある「起動時」をクリックします。右の列の図に示されている 3 つの点をクリックし ([新しいタブを開く] をクリックしないでください)、[編集] をクリックして URL を「0」(またはその他の意味のない数字) に変更します。次に、「保存」をクリックします。次に「」を選択します。

Python は XML データのフィルタリングとフィルタリングを実装します。 Python は XML データのフィルタリングとフィルタリングを実装します。 Aug 09, 2023 am 10:13 AM

Python は XML データのフィルタリングとフィルタリングを実装します。XML (eXtensibleMarkupLanguage) はデータの保存と送信に使用されるマークアップ言語です。柔軟でスケーラブルであり、異なるシステム間のデータ交換によく使用されます。 XML データを処理する場合、多くの場合、必要な情報を抽出するためにデータをフィルター処理する必要があります。この記事ではPythonを使ってXMLデータをフィルタリングする方法を紹介します。必要なモジュールをインポートします。 開始する前に、

フィルタリングされた重複ファイルをQuarkで開く方法 フィルタリングされた重複ファイルをQuarkで開く方法 Mar 01, 2024 am 11:25 AM

Quark Browserを使用していると、重複ファイルをフィルタリングする機能がありますが、これをよく知らない友人もいますので、この機能をオンにする方法を紹介しますので、興味のある方はぜひ一緒に見てください。 1. まず、携帯電話で「Quark Browser」をクリックしてインターフェースに入り、ページ中央のオプションで「Quark Network Disk」をクリックして選択し、開いて入ります。 2. 以下の図に示すように、Quark ネットワーク ディスク インターフェイスの下部で [バックアップ設定] を見つけ、クリックして開きます。 3. 次に、入力したページに [重複ファイルのフィルター] があります。スイッチボタンがあり、その上の円形スライダーをクリックして色に設定すると、機能がオンになります ファイルのバックアップを続行する場合、ネットワークディスク容量を節約するために重複したファイルがスキップされます。

PHP 関数を使用してデータを検索およびフィルターするにはどうすればよいですか? PHP 関数を使用してデータを検索およびフィルターするにはどうすればよいですか? Jul 24, 2023 am 08:01 AM

PHP 関数を使用してデータを検索およびフィルターするにはどうすればよいですか? PHP を使用した開発プロセスでは、データの検索やフィルター処理が必要になることがよくあります。 PHP は、これらの操作の実現に役立つ関数とメソッドを豊富に提供します。この記事では、データを効率的に検索およびフィルタリングするために役立つ、一般的に使用される PHP 関数とテクニックをいくつか紹介します。文字列検索 PHP で一般的に使用される文字列検索関数は、strpos() と strstr() です。 strpos() は、文字列内の特定の部分文字列の位置を見つけるために使用されます。存在する場合は、それを返します。

中国語でCheat Engineを設定するにはどうすればよいですか? Cheat Engine設定中国式方法 中国語でCheat Engineを設定するにはどうすればよいですか? Cheat Engine設定中国式方法 Mar 13, 2024 pm 04:49 PM

CheatEngine は、ゲームのメモリを編集および変更できるゲーム エディタです。しかし、デフォルトの言語は中国語以外なので、多くの友人にとって不便です。今回はCheatEngineで中国語を設定する方法を編集者が詳しく紹介しますので、お役に立てれば幸いです。設定方法 1: 1. ダブルクリックしてソフトウェアを開き、左上隅の「編集」をクリックします。 2. 次に、下のオプションリストで「設定」をクリックします。 3. 開いたウィンドウインターフェイスで、左側の列の「言語」をクリックします

PHP でのフォーム検証とフィルタリングの方法は? PHP でのフォーム検証とフィルタリングの方法は? Jun 29, 2023 pm 10:04 PM

PHP は Web 開発で広く使用されているスクリプト言語であり、そのフォーム検証とフィルタリングは非常に重要な部分です。ユーザーがフォームを送信するとき、データのセキュリティと有効性を確保するために、ユーザーが入力したデータを検証およびフィルタリングする必要があります。この記事では、PHP でフォームの検証とフィルタリングを実行する方法とテクニックを紹介します。 1. フォーム検証 フォーム検証とは、ユーザーが入力したデータをチェックして、データが特定のルールおよび要件に準拠していることを確認することを指します。一般的なフォーム検証には、必須フィールド、電子メール形式、携帯電話番号形式の検証が含まれます。

PHP データのフィルタリング:日付と時刻の入力の処理 PHP データのフィルタリング:日付と時刻の入力の処理 Jul 28, 2023 pm 07:41 PM

PHP データ フィルタリング: 日付と時刻の入力の処理 概要: Web アプリケーションを開発する場合、多くの場合、ユーザーが入力した日付と時刻のデータを処理する必要があります。ユーザー入力にはさまざまな形式やエラーが含まれる可能性があるため、データの正確性とセキュリティを確保するには、効果的なデータのフィルタリングと検証が必要です。この記事では、PHP を使用して日付と時刻の入力を処理する方法を説明し、対応するコード例を示します。フィルタリングと検証の原則: 日付と時刻の入力を処理する前に、まず対応するフィルタリングと検証の原則を決定する必要があります。一般的なものをいくつか示します

See all articles