当准备做以下事情时,我发现了很多不清楚的信息,所以我想问这个问题,看看是否有人可以为我清楚一些事情。
@符号究竟对以下内容做了什么
$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 </td>
<td>Name2: Ms. help F</td></tr><tr><td>City: Helpover 66666</td>
<td>Address: 6666 6TH AVE NE UNIT 333</td>
答案 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,则不会显示该错误。但它仍然存在,如果使用错误处理程序仍将处理。
你可以想象,这不是一个好习惯。避免它,如果你看到代码有它,请放心,它质量较低。另见: