電子書籍の厳選無料作品が豊富!

$_POSTでわたってきたデータで"が\"となっているのですが、これはどういう働きなのでしょうか?

通常の"にする方法はありますか?

A 回答 (2件)

" や ' はPHPではちょっと特殊な意味があります


例えば、_POST["name"]の中身が 名"前
だったとします
そのまま
echo $_POST["name"];
としたらどうなるでしょう
PHPが理解する内容としては
echo "名"前";
となります
これではエラーが出て当然ですよね
ですから、 ” を文字列として扱うために前に¥をつけて
echo "名\"前";
とし、 名と前の間にある " を「文字列の一部として扱いなさい」と解釈させるわけです

"や'を文字として扱いたいときには \を前につけるという約束事があります
\ そのものも文字として扱いたいときには \\ とします
_POSTや_GET等で送られてくるデータすべてに対して特殊な文字が含まれている場合に自動的に\をつけるようにしているのが
php.iniの中の
magic_quotes_gpc = On
となっている部分です
自動で付けたくない場合は
magic_quotes_gpc = Offにしてください
この場合、なんらかの方法で 特殊文字をエスケープ(¥をつける)しないと、セキュリティ的に大変危険になる可能性がありますので十分に注意してください

PHPの標準関数の中に同じように特殊な文字に対して¥をつける
addslashes()
という関数がありますが、2バイト文字(ここでは日本語)に対して深刻がバグがあるので使わない様にしてください

ちなみに¥を取り外すのは
stripslashes()
です
http://jp.php.net/stripslashes
    • good
    • 0

一部の特殊記号は、リテラルとしての識別のためにバックスラッシュでエスケープされます。



下記の設定(php.ini)でエスケープされなくなると思いますが、文字列を扱うときには注意が
必要になります。
文中ではダブルコーテーション(")は使用しないようにするのが無難です。
他にも思わぬ問題が出る可能性が有りますので注意して下さい。

magic_quotes_gpc FALSE

参考URL:http://www.php.net/manual/ja/ref.info.php#ini.ma …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!