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番目も同じように抜き取りたい場合どのような感じになりますでしょうか?

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/09/29 22:59:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント100pt

こんな感じでしょうか?

<?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
)
*/
id:aiomock

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

2009/09/29 14:51:10

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

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

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

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

回答リクエストを送信したユーザーはいません