the*_*ode 5 php regex preg-split
我分裂了这个:
1 2 3 4/5/6 "7/8 9" 10
Run Code Online (Sandbox Code Playgroud)
进入这个:
1
2
3
4
5
6
"7/8 9"
10
Run Code Online (Sandbox Code Playgroud)
与preg_split()
所以我的问题是,如何基于分隔符进行拆分,不包括一对引号内的分隔符?
我有点想避免先用引号来捕捉东西,最好是把它当成一个衬里.
您可以使用:
$s = '1 2 3 4/5/6 "7/8 9" 10';
$arr = preg_split('~("[^"]*")|[ /]+~', $s, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
print_r( $arr );
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => "7/8 9"
[7] => 10
)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容.
$text = '1 2 3 4/5/6 "7/8 9" 10';
$results = preg_split('~"[^"]*"(*SKIP)(*F)|[ /]+~', $text);
print_r($results);
Run Code Online (Sandbox Code Playgroud)
说明:
在交替运算符的左侧,我们匹配引号中的任何内容,使子模式失败,强制正则表达式引擎不使用(*SKIP)和(*F)使用回溯控制重试子字符串.交替运算符的右侧匹配空格字符或正斜杠而不是引号.
产量
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => "7/8 9"
[7] => 10
)
Run Code Online (Sandbox Code Playgroud)