【发布时间】:2012-11-25 10:28:38
【问题描述】:
在一个巨大的字符串中,我试图清理成 json。我遇到这样的事情会破坏脚本(通常来自同一来源多次)
{
29646191: [bunchofjson]
}
有没有我可以做的 preg_replace 来替换所有出现的
{
stringofrandomlysizednumbers: [anything]
}
有
{
"string...numbers": [anything]
}
没用的东西列表:
$output = preg_replace('/([^\\\])":([0-9]{10,})(,|})/', '$1":"$2"$3', $output);
$output = preg_replace('/("\w+"):(\d+)(.\d+)?/', '\\1:"\\2\\3"', $output);
$output = preg_replace('/("\w+"):(\d+)/', '\\1:"\\2"', $output);
$output = preg_replace('/(\d+):/', '"$1":', $output);
$output = preg_replace('/("\w+"):(\d+)(.\d+)?/', '\\1:"\\2\\3"', $output);
$output = preg_replace('/:\s*(\-?\d+(\.\d+)?([e|E][\-|\+]\d+)?)/', ': "$1"', $output);
$output = json_decode($output, true, 512, JSON_BIGINT_AS_STRING));
(在理想情况下,我将 json 解码为关联数组)
【问题讨论】:
-
你能从你的数据中给出一些实际的例子吗?
-
您的原始示例似乎是完全有效的 JSON。也许您应该使用更好的(或简单的标准)JSON 解析器?当它中断时它会给你什么错误信息?
-
你在“没用的事情清单”中的第四次尝试对我有用。
-
@mvp 好像用的是
json_decode(),没有比这更标准的了。