PHPについて質問です。


preg_match 関数を条件判定に使いループ処理しているのですが、

うまくループが出来ず1回しか処理が出来ない状況で困っております。

大変お手数をおかけしますが

時間があるかたでコードを一度見ていただけないでしょうか?

お手数をおかけしますがよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2009/09/29 19:34:40
  • 終了:2009/09/30 11:17:17

ベストアンサー

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252009/09/29 19:46:56

ポイント100pt

正規表現の文字列は / などで挟まないといけません。

<?php
//↓これは駄目で
while(!preg_match('<TD WIDTH="100%"><B>一致するページはありませんでした。</B></TD>',$html)){

//↓こうしたり
while(!preg_match('/<TD WIDTH="100%"><B>一致するページはありませんでした。<\/B><\/TD>/',$html)){

//↓こうする必要があります
while(!preg_match('|<TD WIDTH="100%"><B>一致するページはありませんでした。</B></TD>|',$html)){
?>
id:aiomock

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

2009/09/29 19:55:47
  • id:aiomock
    以下コードになります。

    require "database_connect.php";

    $sql=mysql_query("select * from TEST");

    while ($row = mysql_fetch_array($sql, MYSQL_ASSOC)) {


    //ページが最終ページにいくまで繰り返し処理。

    $kaisuu=0;

    while(!preg_match('<TD WIDTH="100%"><B>一致するページはありませんでした。</B></TD>',$html)){

    $query =''.$row["BRAND"].' '.$row["KEYWORD"].'';
    $str = mb_convert_encoding($query, 'EUC-JP', 'auto');
    $str = urlencode($str);
    $kaisuu=$kaisuu+1;
    $url="";
    $url = 'http://search.auctions.yahoo.co.jp/search/auc?p=' . $str . '&f=0x2&alocale=0jp&mode=2&auccat=0&apg=' . $kaisuu . '';

    //HTMLの抜き取り処理

    $fp = fopen($url, 'r') or die("fopen");
    while (!feof($fp)) {
    $html .= fread($fp, 1024);
    }
    fclose($fp);

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

    //情報をデータベースへ送信

    $abc=(array_unique($m[1]));


    foreach( $abc as $value ) {

    mysql_query("INSERT INTO `abcdefg`.`TEST2` (
    `A` ,
    `B` ,
    `BRAND` ,
    `PRODUCT` ,
    `AUCTION_ID`
    )
    VALUES (
    '', '', '".$row["BRAND"]."', '".$row["KEYWORD"]."', '".$value."'
    );
    ");

    }

    }


    }
  • id:aiomock
    ここの条件式がもしかしたらおかしいかもしれません。

    お手数をおかけしますが見ていただければと思います。

    while(!preg_match('<TD WIDTH="100%"><B>一致するページはありませんでした。</B></TD>',$html)){

    }

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

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

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

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