如何使用preg_match
(或preg_match_all
,或许)获取群组中的所有匹配对象?
例如,我有^(?:,?\s*(?<key>[a-z]))+$
,如果我申请a, b, c
,我就知道了:
object array
0 : string "a, b, c"
key: string "c"
1 : string "c"
我基本上需要获得a
,b
和c
。类似的东西(不需要它):
object array
0 : string "a, b, c"
key: object array
0 : string "a"
1 : string "b"
2 : string "c"
...
有可能吗?什么是更好的解决方案?我真的需要在比赛后拆分吗?
答案 0 :(得分:3)
将其拆分为,\s*
,例如:
$array = preg_split("/,\\s*/", "a, b, c,d,e");
答案 1 :(得分:1)
不,你不能那样嵌套它。但是,您可以手动构建阵列。
$str = 'a, b, c';
preg_match_all("/(\w),?/", $str, $m);
// create array
$a = array(
$str,
'key' => $m[1]
);
print_r($a);
您也可以使用preg_split
抓住这些元素。
$m = preg_split('/\W+/', $str, PREG_SPLIT_NO_EMPTY);