0

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デコードします)

4

2 に答える 2

0

私は推測していて、コードをチェックしていませんが、これを試してください。

$output = preg_replace('/^\s*[0-9]{10,}.*/', '"string...numbers": \[anything\]', $output);

(\ [と\]が必要かどうかはわかりません。必要だとは思いませんが、大文字と小文字を区別して配置します... preg_replaceは、任意の数のスペースを含む行を置き換え、その後10個の連続する数字を置き換えます。

入力はまさにこのようなものですか?

{
 29646191: [bunchofjson]
}

出力は次のようになります

{
 "string...numbers": [anything]
}
于 2012-11-25T11:29:52.177 に答える
0

この代替品を探していると思います:

$output = preg_replace('/(?<=\s)(\d+)(?=\s*:)/', '"$1"', $output);
于 2012-11-25T14:31:13.650 に答える