正規表現に名前付キャプチャ(名前付き捕獲式集合と言うらしい)のネタを先日書いたけど、書き方やバージョンが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はなくてもいいのかな?