2

次の形式のような何千ものJavaScriptオブジェクト形式のテキストファイル(JSONではない)があります。それらはjsonではないため、json_decode関数はそれらで機能しません。私が見つけたすべての記事はPHPからJSOに関するものでしたが、グーグルはあまり役に立ちませんでした:(

{
guid:205, 
      data:{something:"value",
            anotherthing :0,
            thingy: "another value"},
      anotherdata:[[563, "value", 1],
            [564, "value2", 5],
            [565, "value3", 125]],
      onemore:["key", "value"]
}

でこの値に到達する必要がPHPありますが、解決策が見つかりませんでした:(

$str = ??? /any function, class etc.
echo $str->data->thingy; // another value;

また

echo $str['anotherdata'][2][1] // value3;

何か案が?

4

2 に答える 2

4

おそらく、プレーン テキストを解析して、オブジェクト キーに含まれていない二重引用符を追加して文字列を修正できます。何かのようなもの:

$str = '{
guid:205, 
  data:{something:"value",
        anotherthing :0,
        thingy: "another value"},
  anotherdata:[[563, "value", 1],
        [564, "value2", 5],
        [565, "value3", 125]],
  onemore:["key", "value"]
}';

$str = preg_replace('/(\w+)\s{0,1}:/', '"\1":', str_replace(array("\r\n", "\r", "\n", "\t"), "", $str));
$array_data = json_decode($str);

これにより、JSON の不正な形式の文字列が修正され、デコードできるようになります。要素の値の一部に、単語の後にコロンが続くテキスト (つまり、whateverword:) が含まれている場合に問題が発生する可能性があります。

于 2013-11-11T23:00:01.807 に答える
-5

サンプル テキストが一種の JSON 文字列であることを認識していますか? json_decode で変換できます。

http://php.net/json_decodeをご覧ください

于 2013-04-27T10:57:39.730 に答える