我是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,但我不太明白这个用途。
答案 0 :(得分:1)
preg_match_all( '/<span class=\"zg_rankNumber\">(.*?)<\/span>/is', $string, $matches );
print_r($matches)
它需要花费几个小时来编写确切的代码..但我可以告诉你逻辑
答案 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;