• ベストアンサー

正規表現で文字列の抜き出し

PHP4で、文字列の中からマッチしたものを抜き出したいのですが、なかなか上手いこといきません。 $str = "<a href=http://www.abc.com/><b>ABC</b>company</a>"; preg_match("/<a href=(.*)>(.*)<\/a>/i",$str,$str_reg); http://www.abc.com/ と <b>ABC</b>company の2つを抜き出したいのですが、 <b>タグが邪魔をして抜き出せません。 どうすれば上記2つを抜き出せるのでしょうか?

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

  • ベストアンサー
  • sisya
  • ベストアンサー率39% (97/244)
回答No.2

最初のかっこはタグの終了を見ればいいわけですから 汎用性を考えると「.*」より「[^>]*」にすべきですよね? また、タグの要素は「""」で囲まれていることも多いので 以下のようにすると使い勝手が良いのではと思います。 /<a href=\"?([^>]*)\"?>(.*)<\/a>/ 未確認なので、間違ってたらごめんなさい。

その他の回答 (1)

回答No.1

preg_match("/<a href=(.*?)>(.*)<\/a>/i",$str,$str_reg); とか。 ひと文字加えただけ。

uyo_uyo
質問者

お礼

(.*?)だと、non-greedy(でしたっけ?)になるでしたね。参考になりました。ありがとうございます。