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


Javascript Object (string format) to PHP Array

我有成千上万的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;

任何想法?

也许您可以解析纯文本,以便在对象键中添加遗漏的双引号来修复字符串。比如:

$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:)

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

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