避免 php 中的 DOMDocument XML 警告
我从服务器获取 xml 文件,有时我收到无效的 xml 文件,因此我收到警告:
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in
如何捕获此警告并删除该文件?
I'm fetching xml files from a server and sometimes I'm getting a non-valid xml files, because of this I'm getting a warning:
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in
How can I catch this warning and delete the file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你有两个选择。在
load()
调用中使用@
错误控制运算符,例如@$dom->load()
,这有点慢因为它全局地将 display_errors 的值更改为 off,执行该函数并将其设置回 on。我个人更喜欢的另一个选项(我讨厌
@
运算符,我无法忍受在我的代码中看到它)是保存 libxml_use_internal_errors,使用libxml_use_internal_errors(TRUE)
启用它,调用该函数,清除错误缓冲并恢复旧值。这是我的代码中的一个片段,它可以做到这一点:我还不能评论答案,所以我将其写在这里:
You have two choices. Either use the
@
error control operator in yourload()
call, e.g.@$dom->load()
, which is somewhat slow because it globally changes the value of display_errors to off, executes the function and sets it back to on.The other option, which I personally prefer (I hate the
@
operator, I can't stand to see it in my code) is to save the old value of libxml_use_internal_errors, enable it usinglibxml_use_internal_errors(TRUE)
, call the function, clear the errors buffer and restore the old value. Here's a snippet from my code that does that:I can't comment on answers yet, so I'll write it here:
使用
set_error_handler
。Use
set_error_handler
.关闭严格的错误检查:
Turn off strict error checking: