在GIGANTIC字符串中,我试图清理成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解码为关联数组)
答案 0 :(得分:0)
我在猜测,并没有检查我的代码,但试试这个。
$output = preg_replace('/^\s*[0-9]{10,}.*/', '"string...numbers": \[anything\]', $output);
(我不确定\ [和\]是必需的。我不认为他们是,但我把它们放在那里只是包住...... preg_replace将替换任何具有任意数量空格的行,然后替换10个连续的数字字符。
输入是这样的吗?
{
29646191: [bunchofjson]
}
输出将是这样的
{
"string...numbers": [anything]
}
答案 1 :(得分:0)
我相信你正在寻找这个替代品:
$output = preg_replace('/(?<=\s)(\d+)(?=\s*:)/', '"$1"', $output);