preg_matchのTIPS
ちょっと横長になるのが欠点ですが,ちょっとシンプルな感じです.キャプチャ対象が複数ある場合は以下のように書いたりします.
<?php $result = preg_match('_<a href="(.*?)">(.*?)</a>_s', $html, $matches) ? array('link' => $matches[1], 'title' => $matches[2]) : false;preg_matchでのキャプチャをシンプルに | この先生きのこるには
preg_matchではパターン文字列内の()で囲んだものが第3引数で渡した変数にそれぞれ追加されていきます。通常ではそれぞれマッチする順番に応じて数字のキーが割り当てられますが、数字ではなく文字列のキーを指定することもできたりします。
<?php $subject = '<a href="http://www.symfony-project.org/">symfony | Web PHP Framework</a>'; preg_match('!<a href="(?P<link>.*?)">(?P<title>.*?)</a>!s', $subject, $result); var_dump($result);
array(5) { [0]=> string(73) "<a href="http://www.symfony-project.org/">symfony | Web PHP Framework</a>" ["link"]=> string(31) "http://www.symfony-project.org/" [1]=> string(31) "http://www.symfony-project.org/" ["title"]=> string(27) "symfony | Web PHP Framework" [2]=> string(27) "symfony | Web PHP Framework" }
(?P