Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove All Unnecessary Whitespaces from JSON String (in PHP)

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.

like image 434
Geek Girl x0x0 Avatar asked May 25 '14 20:05

Geek Girl x0x0


2 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"}
like image 181
hakre Avatar answered Oct 23 '22 00:10

hakre


A PHP preg_ solution:

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

Inspired by: Regex to match all instances not inside quotes

like image 27
bloodyKnuckles Avatar answered Oct 22 '22 23:10

bloodyKnuckles