0

如何使用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"

我基本上需要geta和。类似的东西(不需要喜欢):bc

object array
    0  : string "a, b, c"
    key: object array
        0  : string "a"
        1  : string "b"
        2  : string "c"
    ...

这是可能的?更好的解决方案是什么?我真的需要在比赛后分开吗?

4

2 回答 2

3

拆分它,\s*,例如:

$array = preg_split("/,\\s*/", "a, b,   c,d,e");
于 2012-01-26T06:52:35.090 回答
1

不,你不能那样嵌套它。但是,您可以手动构建阵列。

$str = 'a, b, c';
preg_match_all("/(\w),?/", $str, $m);

// create array
$a = array(
    $str,
    'key' => $m[1]
);

print_r($a);

你也可以使用preg_splitgo grab 这个元素。

$m = preg_split('/\W+/', $str, PREG_SPLIT_NO_EMPTY);
于 2012-01-26T06:30:36.830 回答