删除空白字符,除了PHP中的引号内部?

Mar*_*ine 4 php regex whitespace parsing quotation-marks

我需要从字符串中删除所有空格,但引用应保持原样.

这是一个例子:

string to parse:
hola hola "pepsi cola" yay

output:
holahola"pepsi cola"yay
Run Code Online (Sandbox Code Playgroud)

任何的想法?我确信这可以用正则表达式完成,但任何解决方案都没问题.

ken*_*ytm 6

我们可以匹配字符串或引号

[^\s"]+|"[^"]*"
Run Code Online (Sandbox Code Playgroud)

所以我们只需要preg_match_all并连接结果.


示例:

$str = 'hola hola "pepsi cola" yay';

preg_match_all('/[^\s"]+|"[^"]*"/', $str, $matches);

echo implode('', $matches[0]);
// holahola"pepsi cola"yay
Run Code Online (Sandbox Code Playgroud)