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 回答