• ベストアンサー

URLを抽出する正規表現

<h3 class="r"><a href="/url?q=http://aaa.co.jp/index.html&sa=U&ei=CuI5T_2iLO7ymAWt6tGlCw&ved=0CBoQFjAB&usg=AFQjCNHEkBnpOAp3vxF9loM0Vk_AuM2e3Q"> 上記のものから http://aaa.co.jp/index.html のみ抽出する正規表現を教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

ちょっと修正 <?PHP $str=<<<eod <h3 class="r"><a href="/url?q=http%3A%2F%2Faaa.co.jp%2Findex.html&amp;sa=U"> eod; $pattern="/<h3 class=\"r\"><a href=\"\/url\?q=(.*?)(?:&amp;|\")/"; preg_match($pattern,$str,$match); print htmlspecialchars($match[1]); ?> こうしてしまうと、h3タグとaタグの間にスペースや改行が入ると マッチしませんがよいですね? また、パラメータqは一つ目ででてこないとマッチしませんがよいですね?

jack111
質問者

お礼

迅速な対応ありがとうございます。 バッチリ取得できました。 今後は、しっかりと正規表現を勉強していきます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ああ、なんとなくわかった こういうことですね? コロンやスラッシュもエンコードしたほうがよいですね <?PHP $str=<<<eod <h3 class="r"><a href="/url?q=http%3A%2F%2Faaa.co.jp%2Findex.html&amp;sa=U&amp;ei=CuI5T_2iLO7ymAWt6tGlCw&amp;ved=0CBoQFjAB&amp;usg=AFQjCNHEkBnpOAp3vxF9loM0Vk_AuM2e3Q"> eod; $pattern="/(?:\?|&amp;)q=(.*?)(?:&amp;|$)/"; preg_match($pattern,$str,$match); print htmlspecialchars($match[1]); ?>

jack111
質問者

補足

ご回答ありがとうございます。 適切なお答えありがとうございます。 ですが、大変恐縮で申し訳ないのですが、 <h3 class="r"><a href="/url?q= という一定のタグの後のURLの場合はどうなるのでしょうか。 よろしくお願いします

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

index.html?・・・ じゃなくて?

関連するQ&A