Home » Php » regex – Remove All Unnecessary Whitespaces from JSON String (in PHP)

regex – Remove All Unnecessary Whitespaces from JSON String (in PHP)

Posted by: admin July 12, 2020 Leave a comment


How do I remove ALL unnecessary whitespaces from a JSON String (in PHP)?

I assume that I need to use preg_replace with some clever regex in order to NOT touch the whitespaces that are part of the values.

A simple example would be:

Before: ‘{ “key”: “value with whitespaces to maintain” }’

After: ‘{“key”:”value with whitespaces to maintain”}’

Basically, I’m looking for a way to minify and pack the string as tight as possible without changing any data.

How to&Answers:

Sorry to state the obvious:

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

And it actually matches perfectly your example, see $after:

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


A PHP preg_ solution:

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

Inspired by: Alternative to regex: match all instances not inside quotes


PHP =>

Syntax :

Example :

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

JS/jQuery =>

Syntax :
jQuery.trim( str )

Example :

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