[PHP-users 26916] 文字列エスケープ関数について
tommy
tommy @ asobicreate.com
2005年 9月 17日 (土) 13:41:15 JST
富沢です。
素朴な疑問なのですが、QuoteMeta関数とpreg_quote関数、似て微妙に異なる
関数ですが、なぜこんな事になっているのか、そして具体的な使い分けに関して
お聞きしたく思いました。
$string = ".\\+*?[^]($)-|+/";
print "preg_quote=".preg_quote($string)."\n";
print "quotemeta=".quotemeta($string)."\n";
こんなコードを実行すると
preg_quote=\.\\\+\*\?\[\^\]\(\$\)-\|\+/
quotemeta=\.\\\+\*\?\[\^\]\(\$\)-|\+/
"|"をエスケープするかしないかに差異があるようです。でもこれを正規表現を
作る際に使おうとすると、"-"と"/"がエスケープされないので、改めて置換関数
などを用いないといけません。なぜ?と疑問を持ちました。
同じように、addslashesとmysql_escape_string,pg_escape_stringなどの関係も
気になるところです。
トリビア的なネタでも良いのですが、参考になるヒントはないでしょうか。些末な
問題ですけど、とても気になったので。
PHP-users メーリングリストの案内