如何从JSON字符串(在PHP中)中删除所有不必要的空格?
我认为我需要使用preg_replace并使用一些聪明的正则表达式,以便不触动作为值一部分的空格。
一个简单的例子:
之前:{ "key": "value with whitespaces to maintain" }
之后:{"key":"value with whitespaces to maintain"}
基本上,我正在寻找一种尽可能紧凑地压缩字符串的方法,而不改变任何数据。
如何从JSON字符串(在PHP中)中删除所有不必要的空格?
我认为我需要使用preg_replace并使用一些聪明的正则表达式,以便不触动作为值一部分的空格。
一个简单的例子:
之前:{ "key": "value with whitespaces to maintain" }
之后:{"key":"value with whitespaces to maintain"}
基本上,我正在寻找一种尽可能紧凑地压缩字符串的方法,而不改变任何数据。
很抱歉要说出这个显而易见的事实:
$before = '{ "key": "value with whitespaces to maintain" }';
$after = json_encode(json_decode($before));
它实际上与您的示例完全匹配,参见$after
:
{"key":"value with whitespaces to maintain"}
$before
是数组或对象怎么办?嵌套函数调用似乎行不通... - Lukas$before
不是JSON文本而是PHP数组或对象值,则无需嵌套函数调用,因为您只需要进行编码而不是解码:$after = json_encode($before);
。就这样,希望对你有所帮助。 - hakre一个 PHP preg_ 解决方案:
preg_replace(
'/\s(?=([^"]*"[^"]*")*[^"]*$)/', ''
, '{ "key": "value a with whitespaces to maintain" }'
);
灵感来源: 正则表达式,匹配所有不在引号内的实例的替代方案
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);`