使用PHP DOMDocument连接HTML表

时间:2011-02-04 21:19:50

标签: php html-parsing domdocument phpquery

我有一大堆大型HTML文档,里面有数据表,我正在编写一个脚本,可以处理HTML文件,隔离标签及其内容,然后将这些表中的所有行连接成一个大数据表。 然后循环遍历新大表的行和列。

经过一些研究后,我开始尝试PHP的DOMDocument类来解析HTML,但我只是想知道,这是做这样的事情的最好方法吗?

这是我到目前为止所得到的......

$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
@$dom->loadHTMLFile('exrate.html');
$tables = $dom->getElementsByTagName('table');

除了表格及其内容之外,我该怎么做? 然后我真的想删除第一个表,因为它是一个目录。然后遍历所有表行并将它们构建到一个大表中。

任何人都有关于如何做到这一点的任何提示? 我一直在浏览php.net上的DOMDocument文档,但我发现语法非常莫名其妙!

干杯,B

编辑:以下是一个HTML文件示例,其中包含我要加入的数据表http://thenetzone.co.uk/exrates/exrate.html

1 个答案:

答案 0 :(得分:0)

好的,用phpQuery排序并进行了大量的反复试验 所以它需要一大堆表并将内容移动到第一个表中,删除空表 然后循环遍历每个表行并从特定列中提取文本,在本例中为每行的第2和第3个td。

require('phpQuery/phpQuery.php');
$doc = phpQuery::newDocumentFileHTML('exrates_code.html');
pq('table:first')->remove();// REMOVE FIRST TABLE, JUST A CONTENTS TABLE SO NOT INTERESTED
pq('tr:has(th)')->remove();// REMOVE TABLE ROWS THAT ARE HEADERS
pq('table:not(:first) tr')->appendTo('table:first');// MOVE CONTENTS OF OTHER TABLES TO FIRST
pq('table:empty')->remove();// REMOVE EMPTY TABLES
pq('br')->remove();

$rows = pq('table tr');
foreach ($rows as $row) {
    $currency = pq($row)->find('td:eq(1)')->text();
    $value = pq($row)->find('td:eq(2)')->text();
}

希望这可以帮助别人!