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.+)みたいな感じで<>の中に指定した文字列がキーになるというTIPS。