Php 在字符串中分解空格,不包括';内部引用

Php 在字符串中分解空格,不包括';内部引用,php,regex,Php,Regex,除了引号内的内容,我不知道如何在字符串中分解空格。我发现了几种可以完成这项工作的正则表达式,但这里的特殊性在于引号前面有一个等号: string = 'arg1="value1" arg2="value2" arg3="value3 value4 value5"'; 我能够分离出引号中包含的内容,但无法获得完整的引号对arg1=“value1 value2” 谢谢你的帮助 $test = 'arg1="value1" arg2="value2" arg3="value3 value4 valu

除了引号内的内容,我不知道如何在字符串中分解空格。我发现了几种可以完成这项工作的正则表达式,但这里的特殊性在于引号前面有一个等号:

string = 'arg1="value1" arg2="value2" arg3="value3 value4 value5"';
我能够分离出引号中包含的内容,但无法获得完整的引号对
arg1=“value1 value2”

谢谢你的帮助

$test = 'arg1="value1" arg2="value2" arg3="value3 value4 value5"';
preg_match_all('#([a-zA-Z0-9]+)="([^"]+)"#', $test, $matches);
var_dump($matches);
返回:

array(3) {
  [0]=>
  array(3) {
    [0]=>
    string(13) "arg1="value1""
    [1]=>
    string(13) "arg2="value2""
    [2]=>
    string(27) "arg3="value3 value4 value5""
  }
  [1]=>
  array(3) {
    [0]=>
    string(4) "arg1"
    [1]=>
    string(4) "arg2"
    [2]=>
    string(4) "arg3"
  }
  [2]=>
  array(3) {
    [0]=>
    string(6) "value1"
    [1]=>
    string(6) "value2"
    [2]=>
    string(20) "value3 value4 value5"
  }
}
.

试试这个

<?php
$string = 'arg1="value1" arg2="value2" arg3="value3 value4 value5"';
$whitespacearray= explode(" ",$string);
print_r($whitespacearray);
?>

arg1=“value1 value2”
在本例中,实际上没有逻辑,但我使用它传递一个可以包含多个单词的标签。在这种情况下,这会变得很有用。我的大约是相同的
“~\w+(?:=“[^”]+”)”
稍微短一点。谢谢Niels,它工作得很好。