我从服务器获取xml文件,有时我得到一个无效的xml文件,因此我收到一个警告:
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in
Run Code Online (Sandbox Code Playgroud)
如何捕获此警告并删除文件?
she*_*sek 39
你有两个选择.@
在你的load()
调用中使用错误控制操作符,例如@$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);
Run Code Online (Sandbox Code Playgroud)
我还不能评论答案,所以我会在这里写一下:
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