PHP将术语放入数组中,将引用的文本保留为单个数组项

Joh*_*ohn 0 php explode

我从表单中得到以下字符串...

Opera"增加了跨平台硬件""踢屁股" - hi.

一般来说,我只是使用以下...

$p0 = explode(' ',$string);
Run Code Online (Sandbox Code Playgroud)

但是现在我要保持任何和所有报价运营商为单个阵列项目而不是让它们创造这样的个别项目"adds,cross-platformhardware".

我想让那个字符串最终创建一个像这样的数组......

Array
(
    [0] => 'Opera',
    [1] => 'adds cross-platform hardware',
    [2] => 'kicks butt',
    [3] => '-hippies'
)
Run Code Online (Sandbox Code Playgroud)

我通常喜欢尽可能不使用正则表达式.

Men*_*ual 5

你可以用一个 preg_match_all(...):

$text = 'Opera "adds cross-platform hardware" "kicks butt" -hippies';
preg_match_all('/"(?:\\\\.|[^\\\\"])*"|\S+/', $text, $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)