【问题标题】:php preg_match_all, regex, extract specific valuephp preg_match_all,正则表达式,提取特定值
【发布时间】:2010-07-12 23:50:08
【问题描述】:

我正在尝试提取在分类广告网站(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) VALUES('', '$item_number', '$bid_user_q', '$bid_member_id_q', '$sub_cat')
"; mysql_error(); $inc++; }

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

【问题讨论】:

  • 只是快速浏览了一下,在您的第一个表达式中,您有一个双反斜杠。链接中没有反斜杠,只有正斜杠。
  • 这是因为 html 标签......它们以某种方式被 stackoverflow website 转义了。我添加了一个 pastebin 链接,其中表达式正确显示。

标签: php regex preg-match-all


【解决方案1】:

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

/<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] = 成员昵称

【讨论】:

  • 忘了提一下,提供的正则表达式是原生的,这意味着我忘了转义其中的反斜杠。作为字符串文字,需要成为正则表达式一部分的反斜杠 需要 进行转义: "/\\s*\\s*(.*?)/"
猜你喜欢
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
相关资源
最近更新 更多