PHPでタグ内から文字列を抜き出すプログラムを作っているのですが、問題が発生しうまくいきません。


$str = "<a href="http://hatena.ne.jp/" class=a>はてな</a>";

preg_match_all('|<a href=\"(.*?)\" class=a>(.*?)<\/a>|', $str, $match);

今現在このような方法でclass=aの<a>タグ内のURLと名前を抜き出しているいます。
上記のような文字列の場合だとうまく抜き出せるのですが、
下記のような場合だと、

$str = "<a href="http://mixi.jp">ミクシー</a><a href="http://hatena.ne.jp/" class=a>はてな</a>";


http://mixi.jp">ミクシー</a><a href="http://hatena.ne.jp/

までを抜き出しちゃいます。
どうにかうまくclass=aの<a>タグ内だけを抜き出せないでしょうか?
ご教授よろしくおねがいします。【正規表現】

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/06/26 19:30:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント60pt

こんな正規表現でどうでしょう。

/<a[^>]*href[^>]*\"([^>]*)\" class=a>([^<]*)<\/a>/i

ただし、"<a class=a href="http://hatena.ne.jp/">" には対応していません。

対応する必要はありますか?

id:Mainichi-Net

うまくいきました!ありがとうございます。

2009/06/19 21:47:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません