在字符串中分解空格,不包括引号内的内容

时间:2013-12-23 13:08:37

标签: php regex

我无法弄清楚如何在字符串中分解白色空格,不包括引号内的内容。我找到了几个可以完成这项工作的正则表达式,但这里的特殊性是引号前面有一个等号:

string = 'arg1="value1" arg2="value2" arg3="value3 value4 value5"';

我能够隔离引号中包含的内容,但我无法获得完整的对arg1="value1 value2"

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

$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"
  }
}

Sample here

答案 1 :(得分:0)

试试这个

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