正規表現ですべてのアンカーテキストを取得

正規表現を使ってページ内に存在するすべてのアンカーテキストを抽出する方法。


// アンカーテキストを取得

$text = <<< BOF

  パナソニックの<a href="http://lets.net/">レッツノート</a>を購入するつもりだったが、
  
  悩んだ末、結局、ネット通販で米沢生産モデルの<a href="http://think.com/">ThinkPad</a>を購入した。

BOF;

  preg_match_all('/<a.*?>(.*)<\/a>/u', $text, $matches_text);
  
  foreach ($matches_text[1] as $text_key => $text_value){
  echo $text_value."<br />\n";
  }
  /* 結果
  レッツノート
  ThinkPad
        */

アンカーテキストをアンカータグ(URLリンク)ごと取得したい場合は下記になります。


// 例 アンカーテキストをタグごと取得

$tagtext = <<< AOF

  パナソニックの<a href="http://lets.net/">レッツノート</a>を購入するつもりだったが、

  悩んだ末、結局、ネット通販で米沢生産モデルの<a href="http://think.com/">ThinkPad</a>を購入した。

AOF;

	preg_match_all("/<a .*?href *= *(?:\".*?\"|'.*?').*?>.*?<\/a>/i", $tagtext, $match_tag);
	foreach ($match_tag[0] as $tag_key => $tag_value){
    echo $tag_value."<br />\n";
  }
  /* 結果
  <a href="http://lets.net/">レッツノート</a> (アンカータグごと取得)
  <a href="http://think.com/">ThinkPad</a> (アンカータグごと取得)
                                                               */