PHPでjson_decodeすると1が返ってくる


小二時間ほどハマったのでメモ。

久しぶりに自分のサイトで公開中のソフトウェアを更新したのですが、それらの情報はヘルプファイルを作成したりもするので、すべてJSONデータにして共通化してます。

たとえば、こんなふうになっています。
http://hibara.org/software/markdownsharpeditor/history/markdownsharpeditor_en.json

ところが、これを下記のようなコードで取ってくると、配列データではなく「1」が返ってくる。

$array_data = 
  json_decode(file_get_contents("markdownsharpeditor_en.json"));

オンラインの「JSONバリデータ」で確認しても書式的に問題なし。うーん・・・

で、悩むこと小二時間。

結論から言えば、パースしたJSONデータ先頭にBOMデータが挿入されていたっていう(笑)。つまりBOM無しのUTF-8でないと、期待通りにパースしてくれないみたい。

エディタによっては、BOMの有無を表示しないので、意外と盲点ですね。
っていうか、PHPのjson_decode関数で、どっちでも行けるようにして(笑)。

お気軽にコメントをどうぞ〜

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントフィード

s