PHP キーワード インターセプト プログラム、インターセプト後にどの単語が不正なフレーズであるかを知るにはどうすればよいですか?
1.panduan.php
/**
* テキスト内にキーワードがあるかどうかを判断します
*/
function filter_text($text, $badstring){
$filter =explode( '|', $badstring);
foreach ($filter as $key) {
if(strpos($text, $key) !== false){
return true;
}
}
return false;
}
?>
2. filter.php
$badstring="やめてください|このコンテンツ|許可されていません";
?>
3.index.php
require_once("panduan.php");
require_once("filter .php");
$biaoti="このコンテンツが含まれている場合は合格しません! ";
if(filter_text($biaoti, $badstring)){
echo "申し訳ありませんが、このコンテンツはプロンプトには「 $***** が含まれています。テキストは表示できません。送信する前に「このコンテンツ」テキストを削除してください!";
exit();
}
?>
上記のコードは、事前に設定されたキーワードを正しくインターセプトできますが、どのキーワードが不正であるかをプロンプトするにはどのように記述すればよいでしょうか?引用符で囲まれた内容を取得した場合: "$*****"?
助けてください、ありがとう!
-----解決策--------------------------------
はここで
if(strpos($text, $key) !== false){
return $key;
}
ここ
if( filter_text($biaoti, $badstring)){
echo "申し訳ありませんが、指示されたコンテンツにはテキスト「$*****」が含まれているため、表示できません。送信する前にテキスト「このコンテンツ」を削除してください!";
exit();
}
次のように変更します
$badstr=filter_text($biaoti, $badstring);
if($badstr){
echo "申し訳ありませんが、指示されたコンテンツには「.$ badstr」が含まれています。テキストを表現できません。送信する前に「このコンテンツ」テキストを削除してください。";
exit();
}
これについて。
------解決策---------
$text = 'やめて'; $badstring = "/ブロックします|このコンテンツ|許可されません/"; if (preg_match($badstring, $text, $matchs)){ echo $matchs[0] //var_dump($matchs); } <br><font color="#e78608">------解決策------------------</font><br> <strong>2 つの効率について</strong><br><br>テストコード: <br>
$start = マイクロタイム(true); $text = 'やめて'; $badstring = "/ブロックします|このコンテンツ|許可されません/"; $count = 0; for($i = 0; $i