0

我正在尝试提取在分类广告网站( http://trademe.co.nz/Trade-Me-Motors/Cars/Toyota/Hiace/auction-300294634.htm)上提问的用户。由于某些原因,我使用的模式并不总是有效,所以如果你能帮助我使用完美的正则表达式,我将不胜感激这是我当前的代码

/获取提问者的成员ID
   $pattern = "//m";
   preg_match_all($pattern, $htmlContent, $member_match);

   $no_a = count($member_match[1];);            

   $inc = 0;

  echo "提问者数量为 $no_a";

  //循环获取所有成员
     而($inc";
//根据member_id获取会员用户匹配
      $pattern2 = "/(.*)/";
     preg_match_all($pattern2, $htmlContent, $member_user_match);
      $bid_user_q = $member_user_match[1][0];
//存储询问者
    mysql_query("插入询问者 (id, item_number, bid_user_q, bid_member_id_q, sub_cat)
                             VALUES('', '$item_number', '$bid_user_q', '$bid_member_id_q', '$sub_cat')");
回声“插入询问者(id,item_number,bid_user_q,bid_member_id_q)
                             值('','$item_number','$bid_user_q','$bid_member_id_q','$sub_cat')
“; mysql_error(); $inc++; }

由于模式中的 html 标记,代码似乎无法正确显示,因此您可以在此处查看http://pastebin.com/iPxizy5X

4

1 回答 1

0

我怀疑它是否“完美”,但这对我有用:

/<small>\s*<a href=\"\/Members\/Listings\.aspx\?member=(\d+)\">\s*<b>(.*?)<\/b>/

如果您使用:

$pattern = "/<small>\s*<a href=\"\/Members\/Listings\.aspx\?member=(\d+)\">\s*<b>(.*?)<\/b>/";
preg_match_all($pattern, $htmlContent, $member_match, PREG_SET_ORDER);

$member_match[0][1] = 会员编号 $member_match[0][2] = 会员昵称 $member_match[1][1] = 会员编号 $member_match[1][2] = 会员昵称

于 2010-07-13T00:05:46.707 回答