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

PHPのpreg_match関数について質問です。

現在WEBのマーケティングをしているのですが、HTML取得後に重複した規則性のある部分データを取得したいと考えています。

例えば

<a href="
http://page10.auctions.yahoo.co.jp/jp/auction/m64501064">

のデータの中で

m64501064 のデータを抜き取りたいのですが


<a href="
http://page8.auctions.yahoo.co.jp/jp/auction/h134424986">



<a href="
http://page8.auctions.yahoo.co.jp/jp/auction/h134424986">

の二つのURLがこのHTMLの文章の前にあります。

抜き取りたい条件ですが

HTML文章の最初から数えて3番目

先頭が <a href="http: を含み

中盤が auctions.yahoo.co.jp/jp/auction/ を含んだ

上記と同じ条件の auctions.yahoo.co.jp/jp/auction/ の後の情報を抜き取りたいとした場合

どのようなpregmatch関数命令があるのでしょうか?

page10の数字の部分はランダムになるのでpreg_match関数の条件として部分的にはずしたいのですが、そのようなことはできますでしょうか?

このあと同じ条件の5番目、7番目も同じように抜き取りたい場合どのような感じになりますでしょうか?

お手数をおかけしますが出来るかたおりましたらご回答お待ちしております。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:co.jp href HTML HTTP JP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● y-kawaz
●100ポイント ベストアンサー

こんな感じでしょうか?

<?php
$str = '
例えば
<a href="http://page10.auctions.yahoo.co.jp/jp/auction/m64501064">
のデータの中で
m64501064 のデータを抜き取りたいのですが
<a href="http://page8.auctions.yahoo.co.jp/jp/auction/h134424986">

<a href="http://page8.auctions.yahoo.co.jp/jp/auction/h134424986">
の二つのURLがこのHTMLの文章の前にあります。';

preg_match_all('|<a\s[^>]*href="http://[a-zA-Z0-9\-\.]*auctions\.yahoo\.co\.jp/jp/auction/([^"]+)"|s', $str, $m);
print_r($m[1]);

/* ↓出力結果
Array
(
 [0] => m64501064
 [1] => h134424986
 [2] => h134424986
)
*/
◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



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