PHP:preg_match和组重复

时间:2012-01-26 06:10:01

标签: php regex preg-match preg-match-all preg-split

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

我基本上需要获得abc。类似的东西(不需要它):

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

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

2 个答案:

答案 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);