0

在准备执行以下操作时,我发现了很多不清楚的信息,所以我想我问一下是否有人可以为我解决问题。

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

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

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

鉴于我有几个表,<td>从表 3 中获取所有数据的最佳/最简单方法是什么。我将列出所有<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++;
    }

我发现这很好你如何在 PHP 中解析和处理 HTML/XML?但它已经 2 岁了,所以我想我会提出一些问题。

只是第 3 个表格的一个小片段...乍一看,我注意到第 3 个标签有一个空格,这会影响结果吗?

 <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>
4

2 回答 2

0

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

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

我还能使用 Xpath 吗?

是的:

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

我注意到第三个标签上有一个空格这会影响结果吗?

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

于 2013-06-25T03:00:55.193 回答
0

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

它不会删除错误,它会忽略它,例如错误级别将设置为 0,如果打开显示错误,则不会显示该错误。但它仍然存在并且如果使用错误处理程序仍将被处理。

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

于 2013-06-25T03:01:23.710 回答