- ベストアンサー
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 のみ抽出する正規表現を教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと修正 <?PHP $str=<<<eod <h3 class="r"><a href="/url?q=http%3A%2F%2Faaa.co.jp%2Findex.html&sa=U"> eod; $pattern="/<h3 class=\"r\"><a href=\"\/url\?q=(.*?)(?:&|\")/"; preg_match($pattern,$str,$match); print htmlspecialchars($match[1]); ?> こうしてしまうと、h3タグとaタグの間にスペースや改行が入ると マッチしませんがよいですね? また、パラメータqは一つ目ででてこないとマッチしませんがよいですね?
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
ああ、なんとなくわかった こういうことですね? コロンやスラッシュもエンコードしたほうがよいですね <?PHP $str=<<<eod <h3 class="r"><a href="/url?q=http%3A%2F%2Faaa.co.jp%2Findex.html&sa=U&ei=CuI5T_2iLO7ymAWt6tGlCw&ved=0CBoQFjAB&usg=AFQjCNHEkBnpOAp3vxF9loM0Vk_AuM2e3Q"> eod; $pattern="/(?:\?|&)q=(.*?)(?:&|$)/"; preg_match($pattern,$str,$match); print htmlspecialchars($match[1]); ?>
補足
ご回答ありがとうございます。 適切なお答えありがとうございます。 ですが、大変恐縮で申し訳ないのですが、 <h3 class="r"><a href="/url?q= という一定のタグの後のURLの場合はどうなるのでしょうか。 よろしくお願いします
- yambejp
- ベストアンサー率51% (3827/7415)
index.html?・・・ じゃなくて?
お礼
迅速な対応ありがとうございます。 バッチリ取得できました。 今後は、しっかりと正規表現を勉強していきます。