我有类似abc xyz "a x" test "test1 test2"
的字符串我想用空格拆分字符串,但引号内的单词应保持原样。我可以使用爆炸拆分字符串,但按照我的要求,爆炸在这里不起作用。没有引号的爆炸字符串
爆炸后/劈裂输出谨
[0] => abc
[1] => xyz
[2] => "a x"
[3] => test
[4] => "test1 test2"
我想使preg_split为我做,但不知道正确的正则表达式。
我有类似abc xyz "a x" test "test1 test2"
的字符串我想用空格拆分字符串,但引号内的单词应保持原样。我可以使用爆炸拆分字符串,但按照我的要求,爆炸在这里不起作用。没有引号的爆炸字符串
爆炸后/劈裂输出谨
[0] => abc
[1] => xyz
[2] => "a x"
[3] => test
[4] => "test1 test2"
我想使preg_split为我做,但不知道正确的正则表达式。
那样做:
$str = 'this is a string "that has quoted text" inside.';
// #1 version
$arOne = preg_split('#\s*("[^"]*")\s*|\s+#', $str, -1 , PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
// #2 version
$arTwo = preg_split('#\s*((?<!\\\\)"[^"]*")\s*|\s+#', $str, -1 , PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
输出:
array(6) {
[0]=>
string(4) "this"
[1]=>
string(2) "is"
[2]=>
string(1) "a"
[3]=>
string(6) "string"
[4]=>
string(22) ""that has quoted text""
[5]=>
string(7) "inside."
}
从这里摘自:Post
雅它为我工作 – mukund 2013-04-04 11:49:16
另一个很好的和简单的答案是
$str = abc xyz "a x" test "test1 test2"
str_getcsv($str,' ','"');
将返回一个阵列,用于更详细地了解str_getcsv 将返回阵列由空间和劈裂没有“的
输出上述
[0] => abc
[1] => xyz
[2] => a x
[3] => test
[4] => test1 test2
的可能重复的[爆炸字符串转换成令牌保持引述SUBSTR完整](HTTP ://stackoverflow.com/questions/5475312/explode-string-into-tokens-keeping-quoted-substr-intact) – Alex 2013-04-04 12:02:45