我该如何拆分以下字符串:
我查看了这个答案:https://dev59.com/kHE95IYBdhLWcg3wrP-w#2202489 但在我的字符串中没有空格链接时无法使用。
但我需要这个:
感谢您的选择:D
谢谢 :D
"foo bar"ANDbar"foo"AND"foofoo" lorem "impsum"
进入
array('"foo bar"', 'ANDbar', '"foo"', 'AND',' "foofoo"', "lorem", '"impsum"')
我查看了这个答案:https://dev59.com/kHE95IYBdhLWcg3wrP-w#2202489 但在我的字符串中没有空格链接时无法使用。
$text = '"foo bar"ANDbar"foo"AND"foofoo" lorem "impsum"';
preg_match_all('/"(?:\\\\.|[^\\\\"])*"|\S+/', $text, $matches);
print_r($matches);
结果:
0 => array:7 [
0 => ""foo bar""
1 => "ANDbar"foo"AND"foofoo""
2 => "lorem"
3 => ""impsum""
]
但我需要这个:
0 => array:7 [
0 => ""foo bar""
1 => "ANDbar"
2 => ""foo""
3 => "AND"
4 => ""foofoo""
5 => "lorem"
6 => ""impsum""
]
感谢您的选择:D
谢谢 :D
preg_match_all('~(?|"([^\\\\"]*(?:\\\\.[^"\\\\]*)*)"|([^\s"]+))~s', $s, $matches)
。然后使用print_r($matches[1])
检查结果。如果您需要带引号的子字符串,则可以使用preg_match_all('~"[^\\\\"]*(?:\\\\.[^"\\\\]*)*"|[^\s"]+~s', $s, $matches)
并使用print_r($matches[0])
获取它们。 - Wiktor Stribiżew