2012-01-26 31 views
0

preg_match(またはpreg_match_all、多分)を使用して、グループ内のすべての一致するオブジェクトを取得する方法はありますか?私はa, b, cに適用された場合PHP:preg_matchとグループの繰り返し

たとえば、私が^(?:,?\s*(?<key>[a-z]))+$を持って、私はこれを取得:

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" 
    ... 

可能でしょうか?よりよい解決策は何ですか?試合後にそれを分ける必要が本当にある?

答えて

3

スプリット、それを、例えば:

$array = preg_split("/,\\s*/", "a, b, c,d,e"); 
1

いいえあなたはそれを入れ子にすることはできません。ただし、配列は手動で作成することもできます。

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

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

print_r($a); 

preg_splitでもこの要素を取得できます。 ,\s*

$m = preg_split('/\W+/', $str, PREG_SPLIT_NO_EMPTY); 
関連する問題