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

时间:2014-05-25 20:35:33

标签: php regex json preg-replace minify

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

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

一个简单的例子是:

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

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

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

3 个答案:

答案 0 :(得分:21)

很抱歉要说清楚:

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

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

{"key":"value with whitespaces to maintain"}

答案 1 :(得分:2)

PHP preg_解决方案:

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

灵感来自:Alternative to regex: match all instances not inside quotes

答案 2 :(得分:0)

PHP =>

语法:     ltrim(string,charlist)

示例:

`$str = '{ "name" : " Test Subject" }';`
`$obj = json_decode($str);`
`$obj->name = ltrim($obj->name);`
`var_dump($obj);`

JS / jQuery =>

语法:     jQuery.trim( str )

示例:

`var obj={ "name" : " Test Subject" };`
`console.log(obj);`
`obj["name"]=obj.name.trim(); // OR // obj.name.replace(/^\s+/,"");`
`console.log(obj);`