避免在PHP中使用DOMDocument XML警告

前端之家收集整理的这篇文章主要介绍了避免在PHP中使用DOMDocument XML警告前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从服务器获取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的解决方案相同的问题.

猜你在找的PHP相关文章