从JSON字符串中删除所有不必要的空格(在PHP中)

Gee*_*0x0 7 php regex json preg-replace minify

如何从JSON字符串中删除所有不必要的空格(在PHP中)?

我假设我需要使用preg_replace和一些聪明的正则表达式,以便不触及作为值的一部分的空格.

一个简单的例子是:

之前: '{"key":"维持空格的值"}'

之后: '{"key":"维持空格的值"}'

基本上,我正在寻找一种方法来尽可能地缩小和打包字符串而不更改任何数据.

hak*_*kre 21

对不起,说明显而易见的:

$before = '{ "key": "value with whitespaces to maintain" }';
$after  = json_encode(json_decode($before));
Run Code Online (Sandbox Code Playgroud)

它实际上完全匹配您的示例,请参阅$after:

{"key":"value with whitespaces to maintain"}
Run Code Online (Sandbox Code Playgroud)


blo*_*les 5

一个PHP preg_解决方案:

preg_replace(
    '/\s(?=([^"]*"[^"]*")*[^"]*$)/', ''
    , '{ "key": "value a with whitespaces to maintain" }'
);
Run Code Online (Sandbox Code Playgroud)

灵感来源:正则表达式匹配不在引号内的所有实例