preg_matchの便利な書き方

2011/08/09 | PHPの基本

preg_match関数は以下のようにして使う(第三引数以降はオプション)。

preg_match($pattern,$subject,$matches,$flag,$offset);

第三引数$matchesには$subjectのうち$patternにマッチした文字が配列で格納される。例えばこんな感じ。

preg_match(‘/^(question([0-9]{2}))\.class\.php$/’,’question01.class.php’,$matches);
var_dump($matches);

array(3) {
[0]=>string(20) “question01.class.php”
[1]=>string(10) “question01″
[2]=>string(2) “01”
}

パターンマッチした箇所が配列で取得できるのだが、キーが数字なので、あとの取り扱いで少し不便。これを以下のように書きなおすことが出来る。

preg_match(‘/^(?P<name>question(?P<number>[0-9]{2}))\.class\.php$/’,’question01.class.php’,$matches);
var_dump($matches);

array(3) {
[0]=>string(20) “question01.class.php”
[“name”]=>string(10) “question01″
[1]=>string(10) “question01″
[“number”]=>string(2) “01”
[2]=>string(2) “01”
}

これでキーがnameとかnumberとか、わかりやすくて使いやすくなる。マニュアルに書いてあったのを見つけた。名前付きサブパターンというらしい。便利そうなのでメモ。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net