1

json が配列をエンコードできるという問題がありますが、特殊文字が原因で適切にデコードできません。

助けようとするstackoverflowでこの関数を見つけました:

function escapeJsonString($value) 
{  # list from www.json.org: (\b backspace, \f formfeed)
                $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
                $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
                $result = str_replace($escapers, $replacements, $value);
                return $result;
    }

しかし、これは文字のリストにすぎません。新しい特殊文字を取得するたびに、手動で処理し、文字とその置換リストに追加する必要があります。

どうすればこれを適切に処理できますか?

4

2 に答える 2

0

jsonをクリーニングしてみてください

$cleanJsonData = preg_replace("/[[:cntrl:]]/", "", $jsonData);
$myData = json_decode($cleanJsonData, TRUE);
于 2013-03-01T11:16:15.733 に答える
0

json_decodeutf-8でエンコードされる入力文字列を除きます。

<?php
$json = json_decode(utf8_encode($str));

これは機能するはずです。

于 2013-03-01T11:16:53.480 に答える