- ベストアンサー
正規表現で文字列の抜き出し
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つを抜き出せるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
最初のかっこはタグの終了を見ればいいわけですから 汎用性を考えると「.*」より「[^>]*」にすべきですよね? また、タグの要素は「""」で囲まれていることも多いので 以下のようにすると使い勝手が良いのではと思います。 /<a href=\"?([^>]*)\"?>(.*)<\/a>/ 未確認なので、間違ってたらごめんなさい。
その他の回答 (1)
- GuruGuru22
- ベストアンサー率51% (177/346)
回答No.1
preg_match("/<a href=(.*?)>(.*)<\/a>/i",$str,$str_reg); とか。 ひと文字加えただけ。
お礼
(.*?)だと、non-greedy(でしたっけ?)になるでしたね。参考になりました。ありがとうございます。