2011-11-17 11 views
9

可能性の重複:preg_matchから名前付きキャプチャだけを取得するにはどうすればよいですか?

$string = 'Hello, my name is Linda. I like Pepsi.'; 
$regex = '/name is (?<name>[^.]+)\..*?like (?<likes>[^.]+)/'; 

preg_match($regex, $string, $matches); 

print_r($matches); 

この版画:

Array 
(
    [0] => name is Linda. I like Pepsi 
    [name] => Linda 
    [1] => Linda 
    [likes] => Pepsi 
    [2] => Pepsi 
) 

どのようにすることができます私はGE
how to force preg_match preg_match_all to return only named parts of regex expression

私はこのスニペットを持っていますただ返すようにT:

Array 
(
    [name] => Linda 
    [likes] => Pepsi 
) 

結果配列のフィルタリングに頼ることなく:

foreach ($matches as $key => $value) { 
    if (is_int($key)) 
     unset($matches[$key]); 
} 

答えて

6

するpreg_matchは関係なく、常に捕捉名前付きグループの{ IF(is_int($ K)){ 解除($マッチ[$

3
return array(
    'name' => $matches['name'], 
    'likes' => $matches['likes'], 
); 

フィルタ、確認のいくつかの種類を。

+5

'foreachの($ K => $ Vとして$マッチ)を数値インデックスを戻しますk]); } } 'テンキーを削除し、名前付きキーのみを残す。 – Radu

関連する問題