我首先在 MAMP 上运行代码并且运行良好。但是当我试图在另一台服务器上运行代码时,我收到了很多警告,比如:
警告:DOMDocument::loadHTML():意外的结束标记:实体中的头部,第 17 行 /cgihome/zhang1/html/cgi-bin/getPrice.php 中的 3349 警告:DOMDocument::loadHTML():htmlParseStartTag:错位实体中的标签,第 17 行 /cgihome/zhang1/html/cgi-bin/getPrice.php 中的第 3350 行警告:DOMDocument::loadHTML():实体中的标签标头无效,第 3517 行在/cgihome/zhang1/html /cgi-bin/getPrice.php 第 17 行
代码如下:
<?php
$amazon = file_get_contents('http://www.amazon.com/blablabla');
$doc = new DOMdocument();
$doc->loadHTML($amazon);
$doc->saveHTML();
$price = $doc -> getElementById('actualPriceValue')->textContent;
$ASIN = $doc -> getElementById('ASIN')->getAttribute('value');
?>
任何人都知道发生了什么事?谢谢!
原文由 LuZ 发布,翻译遵循 CC BY-SA 4.0 许可协议
要禁用警告,您可以使用
这对我有用, 手册,继续阅读:
背景: 您正在加载无效的 HTML。无效的 HTML 很常见,
DOMDocument::loadHTML
纠正了大部分问题,但默认情况下会发出警告。使用
libxml_use_internal_errors
您可以控制该行为。在加载文档之前设置它:然后加载后你可以处理错误(如果你想要/需要):
最后清除它们(因为它们会累加)并恢复以前的设置(如果适用):
参考
libxml_use_internal_errors
禁用 libxml 错误并允许用户根据需要获取错误信息libxml_clear_errors
清除libxml错误缓冲区libxml_get_errors
检索错误数组LibXMLError
libXMLError 类