人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

echo $array[0];

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

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




●質問者: akide
●カテゴリ:ウェブ制作
✍キーワード:echo PHP STR アンカー タグ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GEN111
●35ポイント
$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 以降でマッチした部分になります。


2 ● YOSIZO
●35ポイント

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

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

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

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

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

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


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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ