preg_replace_callback 名前付キャプチャ

2月 25th, 2010 by admin Leave a reply »

正規表現に名前付キャプチャ(名前付き捕獲式集合と言うらしい)のネタを先日書いたけど、書き方やバージョンがpreg_replace_callbackも同様だと思ったら、またしてもそーではないらしい。

php5.2.2からの書き方以前に、preg_replace_callbackで名前付き捕獲式集合が使えるようになるのは5.2.7以降だそうです。。。

$str = 'foobar: 2008';
// PHP 5.2.7 以降で動作します
preg_replace_callback('/(P?<name>\w+): (P?<digit>\d+)/', 'callback' , $matches);
 
function callback($matches){
  print_r($matches);
}
Array
(
    [0] => foobar: 2008
    [name] => foobar
    [1] => foobar
    [digit] => 2008
    [2] => 2008
)

Pはなくてもいいのかな?

Advertisement

コメントを残す