Как удалить ВСЕ ненужные пробелы из строки JSON (в PHP)?
Я предполагаю, что мне нужно использовать preg_replace с некоторым умным регулярным выражением, чтобы НЕ касаться пробелов, которые являются частью значений.
Простой пример:
Перед: '{"ключ": "значение с пробелами для поддержания"}'
После: '{"ключ": "значение с пробелами для поддержания"}'
В принципе, я ищу способ минимизировать и упаковать строку как можно труднее, не изменяя никаких данных.
Извините за это:
$before = '{ "key": "value with whitespaces to maintain" }'; $after = json_encode(json_decode($before));
И это на самом деле идеально соответствует вашему примеру, см. $after
:
{"key":"value with whitespaces to maintain"}
Решение 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);`