Remove All Unnecessary Whitespaces from JSON String (in PHP)

14,074

Solution 1

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"}

Solution 2

A PHP preg_ solution:

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

Inspired by: Regex to match all instances not inside quotes

Share:
14,074
Geek Girl x0x0
Author by

Geek Girl x0x0

I like making muffins and software!

Updated on June 28, 2022

Comments

  • Geek Girl x0x0
    Geek Girl x0x0 almost 2 years

    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.