PHPにPOSTしたJSONがデコードできなかった話(マジッククォート)
こんにちは。フリーランスエンジニアの太田雅昭です。
PHP歴は学生時代から触っていてその後ブランクがあったのですが、今更PHPのクセを新たに知りましたので、メモがわりに共有させていただきます。
JSONが勝手にエスケープされる
JSONに限った話ではないと思うのですが、JavaScriptでhidden要素に入れたJSONデータがデコードできなくなる問題に直面しました。原因はマジッククォートのようです。マジッククォートはPHPの設定で切り替えるようで、自動でエスケープするかしないかを指定できます。
デフォルトでエスケープするようなので、大抵のサーバーではそうなのだそう。PHPはだいぶ古い言語ですので、こういった無茶な要素があったりするわけですね。知ってたら問題ないのですが、知らないとなかなかハマります。
ちなみにこの機能はPHP5.4で廃止になったそうです。
なるほど、ちなみに私のテスト環境は。。。
。。。
PHP7.4…?
え?