【问题标题】:Concatenate HTML tables with PHP DOMDocument用 PHP DOMDocument 连接 HTML 表格
【发布时间】:2011-02-04 21:19:50
【问题描述】:

我有一大堆包含数据表的大型 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

【问题讨论】:

  • 嗯,DOMDocument 太可怕了。尝试 phpQuery 或 QueryPath 或其他 Best methods to parse HTML 之一。但我的第二个建议是使用更简单的正则表达式类之一从 html 表中提取行。
  • 你能粘贴一些你的文档的html代码吗? & 代替 DOMDocument,Php 简单的 HTML DOM 解析器可以用于简单的编码和性能问题。 link
  • 对不起,我应该指定,HTML 文件包含多个具有相同列和列顺序的表格,但每个表格之间由一堆文本段落分隔。我将看看 phpQuery,我很高兴我不是唯一一个发现 DOMDocument 难以组合的人,我喜欢使用 phpQuery 或 QueryPath 的想法,它们是 DOMDocument 的包装器。这里有一个 HTML 代码示例... (thenetzone.co.uk/exrates/exrate.html)

标签: php html-parsing domdocument phpquery


【解决方案1】:

好的,用 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();
}

希望这对某人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多