我从服务器获取xml文件,有时我收到一个非有效的xml文件,因为这样我就得到一个警告:
Warning: DOMDocument::load() [domdocument.load]: Start tag expected,'<' not found in
你有两个选择.在load()调用中使用@ error control运算符,例如@ $dom-> load(),它有点慢,因为它全局将display_errors的值更改为off,执行该函数并将其设置为on.
另一个选择,我个人喜欢(我讨厌@运算符,我不能忍受在我的代码中看到)是保存旧的libxml_use_internal_errors值,启用它使用libxml_use_internal_errors(TRUE),调用该函数,清除错误缓冲并恢复旧值.这是我的代码中的一段代码:
<?PHP $prevIoUs_value = libxml_use_internal_errors(TRUE); $doc->loadHTML((string)$e->response->getBody()); libxml_clear_errors(); libxml_use_internal_errors($prevIoUs_value);
我不能评论答案,所以我会写在这里:
>迈克尔解决方案使它不那么严格,但它仍然会出现一些错误的警告:
nadav@shesek:~$PHP -r '$dom=new DOMDocument; $dom->strictErrorChecking = FALSE ; $dom->loadHTML("<xy></zx>");' PHP Warning: DOMDocument::loadHTML(): Tag xy invalid in Entity,line: 1 in Command line code on line 1
>不要做Fran Verona的建议 – 全球禁用错误报告是你永远不应该做的.在生产中,设置自己的错误处理程序并向用户显示一个更漂亮的消息,并确保错误记录在某个地方 – 但不能完全禁用它.将error_reporting设置为0将导致PHP禁用错误日志记录.> Xeon06解决方案是有问题的,因为您正在为特定代码段执行整个脚本错误处理程序.使用您自己的错误处理程序,只是忽略错误,导致与Fran的解决方案相同的问题.