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

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

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

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

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

PHPでFORMデータから受け取った値をjson_decodeでJSON変換するときマジッククォートでハマった話 |

PHPでFORMデータから受け取った値をjson_encodeでJSON変換するときマジッククォートでハマった話をメモしておきます。 結論としてはマジッククォートがONであればjson_encodeにFORMデータを流しこむ前にstripslashesで取り除くことに落ち着きました。 症状 …

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

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

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

。。。

PHP7.4…?

え?