我有数千个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;
有什么想法吗?
答案 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进行转换。