Javascript对象(字符串格式)到PHP数组

时间:2013-04-27 10:51:03

标签: php javascript-objects

我有数千个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;

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

也许你可以解析纯文本以修复字符串,在对象键中添加错过的双引号。类似的东西:

$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格式错误的字符串,您可以解码它。如果元素的某些值包含带有单词后跟冒号的文本(即,不管是:)

,则可能会出现问题。

答案 1 :(得分:-2)

您是否知道您的示例文本是一种JSON字符串?您可以通过json_decode进行转换。

请参阅http://php.net/json_decode