-1

可能重复:
如何使用 PHP 解析和处理 HTML?

我是 php 的新手,只有几个小时,试图理解搜索和查找。假设我想在这里从亚马逊的畅销榜中提取暗黑破坏神 3 的排名。在那里我可以搜索字符串“暗黑破坏神 III”或类似内容以找到以下块(对不起格式):

 http://www.amazon.com/Diablo-III-Standard-Edition-Pc/dp/B00178630A/ref=zg_bs_4924894011_1
 "><img src="http://ecx.images-amazon.com/images/I/41kXCp%2BUyeL._SL160_SL160_.jpg" alt="Diablo III: Standard Edition" title="Diablo III: Standard Edition" onload="if (typeof      uet == 'function') { uet('af'); }"/></a></div></div><div class="zg_itemRightDiv_normal"><div class="zg_rankLine"><span class="zg_rankNumber">1.</span><span class="zg_rankMeta"></span></div><div class="zg_title"><a  href="

 http://www.amazon.com/Diablo-III-Standard-Edition-Pc/dp/B00178630A/ref=zg_bs_4924894011_1
 ">Diablo III: Standard Edition</a></div><div class="zg_byline">by Blizzard Entertainment

现在,我想尝试提取在这部分中定义的<span class="zg_rankNumber">1.</span>当前为 1 的排名。

有人可以就提取该数字的最佳方法提出建议,以便如果它下降到第二、第三或任何地方(直到 20)我仍然能够提取它?

我对 preg_match 和 regex 进行了一些研究,但我不太了解它的用法。

4

2 回答 2

1
preg_match_all( '/<span class=\"zg_rankNumber\">(.*?)<\/span>/is',  $string, $matches );
print_r($matches)

编写确切的代码需要几个小时。但我可以告诉你逻辑

  1. 从 html 中提取所有“”并将其存储在一个数组中。
  2. 循环遍历数组并检查标题。
  3. 如果找到标题,则从该数组元素中提取排名
于 2012-06-11T20:01:09.753 回答
1

你可以开始使用Simple dom html parser 所以,如果你想找到这个:

<span class="zg_rankNumber">

你可以这样做:($str 包含html数据)

$html = str_get_html($str);
echo $html->find("span[class='zg_rankNumber']",0)->innertext;

编辑:

如果您想获得特定等级的游戏(暗黑破坏神 III),则根据格式,您只需调用:

echo $html->find("img[title^='Diablo III']",0)->find("span[class='zg_rankNumber']",0)->innertext;
于 2012-06-11T20:06:08.480 回答