phpの正規表現で躓いています。


アンカータグのリンク先を取得したいのですが、

$str ="<a href=\"http://www.hogehoge.hoge\">あかさんた</a>";

$pattern = "<a href=\"(.*)\">.*$";
preg_match ( "/".$pattern."/i", $str, $array );

echo $array[0];

素人なりに上記で動作すると思ったのですが動作しません。

どのようにすれば動作するでしょうか?

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2007/06/08 13:28:18
  • 終了:2007/06/15 13:30:05

回答(2件)

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/06/08 13:50:51

ポイント35pt
$str = '<a href="http://www.hogehoge.hoge">あかさんた</a>' ;

$pattern = '<a href="(.*)">.*$' ;
preg_match ( "/".$pattern."/i", $str, $array );

echo $array[1] ; // 添字を 1 に

PHP: preg_match - Manual

matches を指定した場合、検索結果が代入されます。 $matches[0] にはパターン全体にマッチしたテキストが代入され、 $matches[1] には 1 番目ののキャプチャ用サブパターンにマッチした 文字列が代入され、といったようになります。

添字が 0 だと全文になります。1 以降でマッチした部分になります。

id:YOSIZO No.2

YOSIZO回答回数64ベストアンサー獲得回数12007/06/08 13:54:19

ポイント35pt

(.*) の部分がhttp以降の全て(http~あかさんた</a>)にマッチしてるのだと思います。

以下のような修正ではどうでしょうか?

ダブルクォート以外の文字をマッチすることで概ね正しい結果が得られる課と思います。

$pattern = "<a href=\"([^\"].*)\">.*$";

※上記は実際に動かして試してません。

※あくまでもテキトーに思いついただけですので、間違ってたらごめんなさい(^^;


http://www.google.co.jp/search?q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%...

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません