解析HTML几个表DOM

时间:2013-06-25 02:14:56

标签: php html parsing xml-parsing html-parsing

当准备做以下事情时,我发现了很多不清楚的信息,所以我想问这个问题,看看是否有人可以为我清楚一些事情。

@符号究竟对以下内容做了什么

 $domOb = new DOMDocument();
 $html  = @$domOb->loadHTMLFile('http:...'); 

这确实消除了错误并实际解析了数据,但这是一个很好的实践解决方案。我在没有@符号的情况下使用了它,并得到了预期的结果。

鉴于我有几个表,从表3中获取所有<td>的最佳/简单方法是什么。我将列出所有<td>,然后简单地开始和结束与所需数据相关的值

如果想通过PHP解析HTML,我喜欢使用DOM的想法,所以在获取文件时应该使用什么。 loadHTMLFile() loadHTML() ...我仍然可以使用Xpath吗?...如果它非常繁忙/标记错误的HTML会影响这个吗?

查看数据的好习惯

    $items = $domOb->getElementsByTagName('td');

    $k    = 0;
    $num  = $items->length;
    while ($k < $num)
    {
        echo $item_web = $items->item($k)->, '<br>';
        $k++;
    }

我发现这个很好How do you parse and process HTML/XML in PHP?但是它已经2岁了,所以我认为id提出了一些问题。

只是第三张桌子的一小部分......乍一看,我注意到第三个标签上的空格会影响结果吗?

 <td>Parcel ID: <a href=... style=text-decoration:underline;><b>666666</b></a></td>
 <td>Name: Mr. help</td></tr><tr>
 <td >Parcel Address: 666 help RD&nbsp;</td>
 <td>Name2: Ms. help F</td></tr><tr><td>City: Helpover 66666</td>
 <td>Address: 6666 6TH AVE NE UNIT 333</td>

2 个答案:

答案 0 :(得分:0)

  

@符号究竟对以下内容做了什么

它应该可以抑制错误,但这不是在DomDocument和相关扩展上执行此操作的正确方法。正确的方法是在加载格式错误的HTML之前调用libxml_use_internal_errors(true);

  

我还可以使用Xpath吗?。

是:

$xpath = new DomXPath($domOb);
$tds = $xpath->query('//td');
  

我注意到第3个标签上的空格会影响结果吗?

当您从TD节点访问textContent属性时,将转换实体。

答案 1 :(得分:0)

  

这[@ error control operator]确实删除了一个错误并实际解析了数据,但这是一个很好的实践解决方案。我在没有@符号的情况下使用了它,并得到了预期的结果。

它不会删除错误,它会忽略它,例如错误级别将设置为0,如果启用了display-errors,则不会显示该错误。但它仍然存在,如果使用错误处理程序仍将处理。

你可以想象,这不是一个好习惯。避免它,如果你看到代码有它,请放心,它质量较低。另见: