从 JSON 字符串中删除所有不必要的空格(在 PHP 中)

Posted

技术标签:

【中文标题】从 JSON 字符串中删除所有不必要的空格(在 PHP 中)【英文标题】:Remove All Unnecessary Whitespaces from JSON String (in PHP) 【发布时间】:2014-07-14 14:42:24 【问题描述】:

如何从 JSON 字符串中删除所有不必要的空格(在 php 中)?

我假设我需要将 preg_replace 与一些巧妙的正则表达式一起使用,以免触及值中的空格。

一个简单的例子是:

之前: ' "key": "value with whitespaces to maintain" '

之后: '"key":"value with whitespaces to maintain"'

基本上,我正在寻找一种在不更改任何数据的情况下尽可能缩小和压缩字符串的方法。

【问题讨论】:

一种方法是解析JSON,然后使用自己的编码实现,不是很困难。 【参考方案1】:

一个PHPpreg_解决方案:

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

灵感来自:Regex to match all instances not inside quotes

【讨论】:

非常好。我用它来清理 qraphql 查询,然后再将它们发送到 API【参考方案2】:

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);`

【讨论】:

【参考方案3】:

对不起,说的很明显:

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

它实际上与您的示例完美匹配,请参阅$after

"key":"value with whitespaces to maintain"

【讨论】:

以上是关于从 JSON 字符串中删除所有不必要的空格(在 PHP 中)的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON 字符串中删除所有缩进和空格,除了它在 Ruby 中的值之外

从 JSON 对象中删除空格,但不在引号内

从 SQL Server 中的字符串中删除所有空格

C语言-删除字符串空格

如何从PHP和Javascript中的字符串中删除所有空格[重复]

如何从字符串中删除所有空格