php搜索字符串,然后找另一个

时间:2012-06-11 19:54:55

标签: php regex preg-match

  

可能重复:
  How to parse and process HTML with PHP?

我是php的新手,只有几个小时,试图了解搜索和查找。假设我想从亚马逊的畅销书列表here中提取暗黑破坏神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,但我不太明白这个用途。

2 个答案:

答案 0 :(得分:1)

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

它需要花费几个小时来编写确切的代码..但我可以告诉你逻辑

  1. 全部提取&#34;&#34;从html中将它存储在一个数组中。
  2. 遍历数组并检查标题。
  3. 如果找到了标题,则从该数组元素中提取排名

答案 1 :(得分: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;