【まとめ+考察】PHPの文字列フィルタリング各種関数適用
まずは自省…正規表現が下手なので書いたフィルタリング条件は基本的に失敗してます…
無理ですオンラインで確認した機能を理解しました。変更した後でも問題が発生しました。
さまざまな csdn の神の指導の下、少し啓発されました... 元の質問投稿へのリンク
では各パスの機能を公開していますので、亡くなった方でもまだ死んでいない方でもご利用いただけます。
よく使われる方法を積極的に追加して投稿していただければ幸いです。
基本機能
---------------------- ---------------------------- ---------------
実際、mysql と php には、文字の問題に対処するために使用できる多くの関数が付属しています。
ps: 以来。 php6 は、magic_quotes_gpc をサポートしていません。以下のものは、magic_quotes_gpc=off の条件下であると想定されます (php6 でどのような新しいものがリリースされるかはわかりません...)
mysql_real_escape_string()
定義: この関数は、SQL ステートメントで使用される文字列内の特殊文字をエスケープします。
構文: mysql_real_escape_string(string,connection)
説明: この関数は string 内の特殊文字をエスケープし、接続の現在の文字セットを考慮するため、mysql_query() で安全に使用できます。
コード例は長すぎるため、関数の説明リンクを示します。 w3school phpnet
addSlashes()
定義:addslashes() 関数は、指定された定義済み文字の前にバックスラッシュを追加します。
構文: addedlashes(string)
注: デフォルトでは、PHP 命令 magic_quotes_gpc がオンになっており、すべての GET、POST、COOKIE データに対して addlashes() が自動的に実行されます。 magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。二重エスケープが発生するためです。この状況が発生した場合は、関数 get_magic_quotes_gpc() を使用して検出できます。
コード例は長すぎるため、関数説明のリンクを貼っておきます。 w3school phpnet
関連関数
StripSlashes() はバックスラッシュ文字を削除します。 (フィルタ文字の説明時に使用します)
mb_convert_encoding()
PHP の内部コード変換関数
バージョン (PHP 4 >= 4.0.6, PHP 5)
この関数はさまざまな相互コードを変換できますエンコーディング間の変換
関連リンク phpnet
iconv()
php の内部コード変換関数、同上
iconv() は gb2312 の変換にバグがあるため、それを処理する必要がありますこのように
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->iconv( "UTF-8", "gb2312//IGNORE" , $str)
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->mb_convert_encoding($str,"gb2312", "UTF-8");
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> SET NAMES utf8; SET CHARACTER SET utf8; SET COLLATION_CONNECTION='utf8_general_ci';
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php function escape($str) { preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(ord($v[0]) < 128) $ar[$k] = rawurlencode($v); else $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v)); } return join("",$ar); } function unescape($str) { $str = rawurldecode($str); preg_match_all("/(?:%u.{4})|.+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(substr($v,0,2) == "%u" && strlen($v) == 6) $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4))); } return join("",$ar); } ?>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php function addslashes_str($str){ $str=addslashes($str); $str=str_replace($str,";",'\;'); return $str; } function stripslashes_str($str){ $str=stripslashes($str); $str=str_replace($str,'\;',";"); return $str; } ?>