PHPにPOSTしたJSONがデコードできなかった話(マジッククォート)


こんにちは。フリーランスエンジニアの太田雅昭です。

PHP歴は学生時代から触っていてその後ブランクがあったのですが、今更PHPのクセを新たに知りましたので、メモがわりに共有させていただきます。

JSONが勝手にエスケープされる

JSONに限った話ではないと思うのですが、JavaScriptでhidden要素に入れたJSONデータがデコードできなくなる問題に直面しました。原因はマジッククォートのようです。マジッククォートはPHPの設定で切り替えるようで、自動でエスケープするかしないかを指定できます。

https://www.1ft-seabass.jp/memo/2012/12/03/php-magicquotes-json\_encode-tips/

デフォルトでエスケープするようなので、大抵のサーバーではそうなのだそう。PHPはだいぶ古い言語ですので、こういった無茶な要素があったりするわけですね。知ってたら問題ないのですが、知らないとなかなかハマります。

ちなみにこの機能はPHP5.4で廃止になったそうです。

なるほど、ちなみに私のテスト環境は。。。

。。。

PHP7.4…?

え?