バックスペース(\x08): \b 水平タブ (\x09): \t 改ページ (\x0C): \f
以下は詳細です。
json_last_error() は php-5.3 で使えるので、無い場合、適当な場所にインストールします。
$ ./configure --prefix=/usr/local/stow/php-5.3.2 --disable-cgi --disable-all --enable-json $ make $ sudo make install
エラーの出る(json_decode() が NULL を返す)プログラムに json_last_error() を追加します。
$ lv /tmp/test.php ... var_dump(json_decode($buf)); var_dump(json_last_error()); $arr = get_defined_constants(true); var_dump($arr["json"]); ...
json_last_error() が JSON_ERROR_CTRL_CHAR でした。
$ /usr/local/stow/php-5.3.2/bin/php /tmp/test.php | lv ... NULL int(3) array(10) { ["JSON_HEX_TAG"]=> int(1) ["JSON_HEX_AMP"]=> int(2) ["JSON_HEX_APOS"]=> int(4) ["JSON_HEX_QUOT"]=> int(8) ["JSON_FORCE_OBJECT"]=> int(16) ["JSON_ERROR_NONE"]=> int(0) ["JSON_ERROR_DEPTH"]=> int(1) ["JSON_ERROR_STATE_MISMATCH"]=> int(2) ["JSON_ERROR_CTRL_CHAR"]=> int(3) ["JSON_ERROR_SYNTAX"]=> int(4) }
$buf を最小限にしてテストしたところ、バックスペース、水平タブ、改ページ、が、そのまま書かれていることが原因でした。
0 件のコメント:
コメントを投稿