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"

基本的に get abおよびが必要cです。それのようなもの(好きである必要はありません):

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_splitこの要素をつかむためにも使用できます。

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