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