从PHP中的表中获取数据

时间:2010-09-04 20:28:04

标签: php screen-scraping

到目前为止,这是我必须要做的事情:

   <div class="toplist">
                <div class="toplist_left"></div>
                <div class-"toplist_body">
                <div class="toplist_right"></div>
                 <div class="toplist_body_rank">9</div>
                 <div class="toplist_body_link"><a href="?support=details&id=204">


Gunz Reloaded &nbsp;&nbsp;&nbsp;<font size=1 color=#d4d2cf>Online</font></small>

</a></div>
                 <div class="toplist_desc">27 7 || DDoS Protection || Hacks</div>
                 <div class="toplist_votes">5665</div>
             </div>
             </div>

我正在尝试找到“toplist_body_link匹配并显示它的”toplist_votes“

你知道我怎么能这样做吗?

我试过了:

<?php
$topsite = file_get_contents('[removed link]');

preg_match(('#<div class=\"toplist_body_votes\">(.*)#', $topsite, $match) && preg_match('#<a href=\"?support=details&id=204\">#'));
$votes = $match[1];

echo "Current Votes: $votes \n";
?>

你知道什么是错的,为什么它不起作用?

3 个答案:

答案 0 :(得分:3)

使用PHP库进行DOM操作,而不是正则表达式。我相信我之前使用过这个:http://simplehtmldom.sourceforge.net/。使用非常简单。因为这不是XML,PHP DOM可能不适合你。

答案 1 :(得分:0)

如果它是xHTML,那么我建议使用PHP XML解析器解析它,然后使用节点而不是正则表达式访问数据。通常正则表达式是解析html / xhmtl的坏主意。

http://php.net/manual/en/book.xml.php

上面的SimpleCode是正确的,使用DOM解析器:http://simplehtmldom.sourceforge.net/

答案 2 :(得分:0)

这个问题以及有关使用正则表达式解析HTML的所有问题都以RegEx match open tags except XHTML self-contained tags的最佳答案以史诗般的方式得到了回答。必读。

另见无畏领袖的blog

不要使用regexp,请使用真正的解析解决方案。如果您的HTML是有效的XML / XHTML,请使用DOMXSLTProcessor。如果您不能依赖它是有效的XHTML,请使用Beautiful Soup或@SimpleCoder引用的SimpleHtmlDom包。