PHPのstrpos関数を使用して、機密キーワードをブロックする機能、strposキーワードを実装します
現在、ネットワーク情報の監視は非常に厳しく、特にキーワードのブロックが厳しくなっています。特に現在の WEB2.0 時代では、ほぼすべての Web サイトのコンテンツはネチズンからのものであり、Web マスターが管理できるようになりました。他の人があなたのサイトで特定のキーワードを公開することを禁止したい場合は、事前に禁止する必要があります。 PHP を使用してキーワードをブロックするには、さまざまな関数スタイルがあります。たとえば、正規表現は、ここでは 1 つずつ説明しません。
感想:
1. キーワードを 1 行に 1 つずつ具体的に記述します。いくつでも記述できます。
2. PHP はキーワードテキストを読み取り、配列に保存します
3. キーワード配列を走査し、strpos 関数を 1 つずつ使用して、コンテンツにキーワードがあるかどうかを確認します。キーワードがある場合は true を返し、ない場合は false を返します。
PHP コードは次のとおりです:
コードをコピーします コードは次のとおりです:
/**
* PHP でキーワードをフィルターするには strpos 関数を使用します
* ヘルパーズホーム
*/
//キーワードフィルター機能
関数 keyWordCheck($content){
// 空白を削除します
$content = トリム($content);
//キーワードテキストを読む
$content = @file_get_contents('keyWords.txt');
// 配列に変換
$arr =explode("n", $content);
// トラバーサル検出
for($i=0,$k=count($arr);$i
// 配列要素が空の場合、このループをスキップします
if($arr[$i]==''){
続く;
}
// キーワードが検出された場合は、一致したキーワードを返して操作を終了します
If(@strpos($str,$arr[$i])!==false){
//$i=$k;
return $arr[$i];
}
// キーワードが検出されない場合は false を返します
false を返します;
}
$content = '公開するテキストコンテンツは次のとおりです。 。 。 ';
// キーワードをフィルタリングします
$keyWord = keyWordCheck($content);
// キーワードが存在するかどうかを判断します
if($keyWord){
echo '投稿したコンテンツにはキーワードが含まれています'.$keyWord;
}その他{
エコー「おめでとうございます!」キーワードで検出';
// 書き込み操作を実行してリリースアクションを完了できます。
}
コードを書いた後、変数 $content にキーワード content を意図的に書き込んで実行したところ、実行結果はキーワードが検出されず、その他の禁止されたキーワードが渡されました。
落ち込んで、何か問題があるのではないかと判断し始めました。
エンコードに問題がありますか? すぐにメモ帳で keyWord.txt ファイルを再度開き、UTF-8 形式で保存します。結果はまだうまくいきませんでした。
keyWord.txt のテキスト コンテンツを取得できませんか? すぐに print_r() が正常に読み取られ、行ごとに配列に変換されたことがわかります。
そこで、プログラム内でキーワード配列を直接宣言しました:
コードをコピーします
コードは次のとおりです:
/**
* PHP でキーワードをフィルターするには strpos 関数を使用します
* ヘルパーズホーム
*/
//キーワードフィルター機能
関数 keyWordCheck($content){
$content = トリム($content);
//キーワードテキストを読む
//$content = @file_get_contents('keyWords.txt');
// 配列に変換
//$arr =explode("n", $content);
//プログラム内でキーワード配列を直接宣言します
$arr = array('キーワード 1','キーワード 2','キーワード 3','キーワード 4'...);
// トラバーサル検出
for($i=0,$k=count($arr);$i
// 配列要素が空の場合、このループをスキップします
if($arr[$i]==''){
続く;
}
// キーワードが検出された場合は、一致したキーワードを返して操作を終了します
If(@strpos($str,$arr[$i])!==false){
//$i=$k;
return $arr[$i];
}
//キーワードが検出されない場合は false を返します
false を返します;
}
$content = 'ここにキーワード 2 を含む、公開するコンテンツがあります';
// キーワードをフィルタリングします
$keyWord = keyWordCheck($content);
// キーワードが存在するかどうかを判断します
if($keyWord){
echo '投稿したコンテンツにはキーワード ['.$keyWord.'] が含まれています';
}その他{
エコー「おめでとうございます!」キーワードで検出';
// 書き込み操作を実行してリリースアクションを完了できます。
}
// プログラム実行結果:投稿した内容にはキーワード[キーワード2]が含まれています
// プログラムは正常です
PHP でキーワードの配列を宣言すると機能しますが、テキスト ファイルを読み取ると機能しません。
不思議に思ったときに、テキストファイルから読み込んだ内容にスペースや改行が含まれていてフィルタリングされていないことが原因ではないかと考えました。そこで、トラバーサルマッチングにトリム機能が追加されました。
空白を除外するtrim()関数を追加し、実行した後、問題がここにあることが判明しました。
コードをコピーします
コードは次のとおりです:
/**
* PHP でキーワードをフィルターするには strpos 関数を使用します
* ヘルパーズホーム
*/
//キーワードフィルター機能
関数 keyWordCheck($content){
// 空白を削除します
$content = トリム($content);
//キーワードテキストを読む
$content = @file_get_contents('keyWords.txt');
// 配列に変換
$arr =explode("n", $content);
// トラバーサル検出
for($i=0,$k=count($arr);$i
// 配列要素が空の場合、このループをスキップします
if($arr[$i]==''){
続く;
}
// キーワードが検出された場合は、一致したキーワードを返して操作を終了します
// 今回はtrim()関数を追加しました
If(@strpos($str,trim($arr[$i]))!==false){
//$i=$k;
return $arr[$i];
}
// キーワードが検出されない場合は false を返します
false を返します;
}
$content = '公開するテキストコンテンツは次のとおりです。 。 。 ';
// キーワードをフィルタリングします
$keyWord = keyWordCheck($content);
// キーワードが存在するかどうかを判断します
if($keyWord){
echo '投稿したコンテンツにはキーワードが含まれています'.$keyWord;
}その他{
エコー「おめでとうございます!」キーワードで検出';
// 書き込み操作を実行してリリースアクションを完了できます。
}
php strpos関数の問題3 つの等号を使用します: ===、この要件はより厳密です。値が同じである必要があるだけでなく、true を返すには値の型も同じである必要があります
phpのStrpos関数の問題
3 番目のパラメータは、どこから探し始めるかを意味します~~
しかし、返された結果は完全な文字列に基づいて位置を計算します。
$test = "whello world";
print (strpos($text,"w"));returns 0
print(strpos($text,"w",1));returns 7
http://www.bkjia.com/PHPjc/867247.html
www.bkjia.com本当http://www.bkjia.com/PHPjc/867247.html技術記事 strpos 関数は、機密キーワードをブロックする機能を実装するために PHP で使用されます。strpos キーワードは現在、ネットワーク情報、特にブロックキーワードに関して非常に厳しく規制されています。特に今のWEB2.0時代ではWebサイトの内容が...