不正な文字をフィルタリングするための HTML に一致する正規表現
HTML タグを照合するための照合テーブルは次のとおりです:
上記の 2 つの表現、「?」が付いているものと付いていないもの、違いは何ですか?
「?」は正規表現のワイルドカード文字であることがわかっています。これは、前の部分式に 0 回または 1 回一致するか、非貪欲修飾子を指定します。
ここで、テストを通じて、次のコンテンツと一致する場合は「?」を追加しないという結論に達しました:
これが最初のテーブルです
$str=preg_replace("/s+/", " ", $str); // 冗長な改行をフィルターします
$str=preg_replace("/<[ ]+/si","<",$str); //<__("<" の後ろにスペースを入れます)
$str=preg_replace("//si","",$str); //コメント
$str=preg_replace("/<(!.*?)>/si","",$str);
$str=preg_replace("/<(/?html.*?)>/si","",$str);
$str=preg_replace("/<(/?head.*?)>/si","",$str);
$str=preg_replace("/<(/?meta.*?)>/si","",$str);
$str=preg_replace("/<(/?body.*?)>/si","",$str);
$str=preg_replace("/<(/?link.*?)>/si","",$str);
$str=preg_replace("/<(/?form.*?)>/si","",$str);
$str=preg_replace("/cookie/si","cookie",$str); // Cookie タグをフィルターします
;
$str=preg_replace("/<(applet.*?)>(.*?)<(/applet.*?)>/si","",$str);
$str=preg_replace("/<(/?applet.*?)>/si","",$str); // アプレットタグをフィルタリングします
$str=preg_replace("/<(style.*?)>(.*?)<(/style.*?)>/si","",$str);
$str=preg_replace("/<(/?style.*?)>/si","",$str);
$str=preg_replace("/<(title.*?)>(.*?)<(/title.*?)>/si","",$str);
$str=preg_replace("/<(object.*?)>(.*?)<(/object.*?)>/si","",$str);
$str=preg_replace("/<(/?objec.*?)>/si","",$str); // オブジェクトタグをフィルタリングします
$str=preg_replace("/<(noframes.*?)>(.*?)<(/noframes.*?)>/si","",$str);
$str=preg_replace("/<(/?noframes.*?)>/si","",$str); // noframes タグをフィルターします
$str=preg_replace("/(.*?)/si","",$str); /フィルターフレームタグ
$str=preg_replace("//si","",$str); //フレームタグをフィルタリングします
$str=preg_replace("/<(script.*?)>(.*?)<(/script.*?)>/si","",$str);
$str=preg_replace("/<(/?script.*?)>/si","",$str);
$str=preg_replace("/Webpage Special Effects/si","javascript",$str); // スクリプトタグをフィルターします
$str=preg_replace("/on([a-z]+)s*=/si","on1=",$str); // スクリプトタグをフィルターします
$str=preg_replace("//si","",$str); //javascript:alert('aabb)
?>
http://www.bkjia.com/PHPjc/445418.html
www.bkjia.com
true
技術記事