PHPでの文字エスケープ


手動エスケープ、文字の復元
「」はエスケープ記号で、「」の直後の最初の文字には意味がないか、特別な意味があります.たとえば「'」は文字列のデリミタであり、「'」の「'」はデリミタの意味を失い、普通の単一引用符になります.
たとえば
echo 'select * from user where username=\'107lab\'';
実行結果:
select * from user where username='107lab'
テクニック:簡単な文字列については、手動で文字列のエスケープを行うことをお勧めしますが、データ量の大きい文字列については、自動エスケープ関数を使用して文字列のエスケープを実現することをお勧めします.
自動エスケープ、文字列の復元
自動エスケープ復元文字列は、PHPが提供するaddslashes()関数とstripslashes()関数を適用して実装できます.
addslashes()関数:
文字列strに斜線""を加え、指定した文字列の文字をエスケープするために使用されます.この関数でエスケープできる文字には、単一引用符、二重引用符、反スラッシュ、NULL文字"0"が含まれます.この関数は、SQL文を生成するときにSQL文の一部の文字をエスケープするためによく使用されます.
構文は次のとおりです.
string
 addslashes(string str); パラメータstrは、操作される文字列です.
stripslashes()関数:
addslashes()関数を適用してエスケープされた文字strを元に戻すために使用されます.
構文は次のとおりです.
string
 stripslashes(string str); パラメータstrは、操作される文字列です.
$str="select * from user where username='107lab'";
$a=addslashes($str);
echo $a."<br>";
$b= stripslashes($a);
echo $b."<br>";
実行結果:
select * from user where username=\'107lab\'
select * from user where username='107lab'
注意:すべてのデータは、データベースを挿入する前にaddslashes()関数を適用して文字列変換を行う必要があります.特殊な文字が変換されていないため、データベースを挿入するときにエラーが発生しないようにします.
デフォルトでは、PHP命令magic_quotes_gpcはonであり、主にすべてのGET、POST、COOKIEデータに対してaddslashes()を自動的に実行する.もうmagic_にquotes_gpcエスケープされた文字列はaddslashes()を使用します.これは二層エスケープを引き起こすからです.この場合、関数get_を使用できます.magic_quotes_gpc()で検出します.
 
addcslashes()関数
指定した文字列をエスケープします.すなわち、指定した文字の前にスラッシュを付けます.この関数を使用すると、データベースに追加する文字列をエスケープし、文字化けしなどの問題を回避できます.
文法は次のとおりです.
string addcslashes(string str,string charlist)
パラメータstrは、操作される文字列である.パラメータcharlistは、文字列の前にスラッシュ""を付ける文字を指定します.パラメータcharlistに"""、"r"などの文字が含まれている場合、アルファベットではなくASCIIコードが32未満、126以上の文字はすべて8進表に変換されます.
stripcslashes()関数
addcslashes()関数のエスケープを適用した文字列strを元に戻します.
構文は次のとおりです.
string stripcslashes(string str)
例:
$str= addcslashes("107     ","107     ");
      
\1\0\7\347\275\221\347\253\231\345\267\245\344\275\234\345\256\244
: された の にスラッシュを けると かりやすい
$str = addcslashes("A001 A002 A003","A");
echo($str); 
      

\A001\A002\A003
 
:addcslashes() は と に です.
:addcslashes()を の に する は、0(NULL)、r(リターン)、n( )、f ページ)、t(タブ)、v( タブ)に してください.PHPでは、0,r,t,fおよびvは、 め されたエスケープシーケンスである.