PHP DOM loadHTML() 方法异常警告

标签 php dom webserver

我有以下代码在我的本地主机上运行良好:

$document = new DOMDocument();
$document->loadHTML($p_result);

$form = $document->getElementsByTagName('form')->item(0);

// Code continues using the $form variable

相同代码在外部服务器上更新后,loadHTML() 失败并发出此警告。

Warning:  DOMDocument::loadHTML() expects parameter 1 to be a valid path, string given in path/name/to/script.php

也返回了 NULL 而不是对象,因此代码很快就会遇到 fatal error 。

请注意,$p_result 的内容在外部服务器和我的本地主机上完全相同。

但为什么它会显示那种警告,为什么它不起作用?

难道 loadHTML() 不希望参数 1 首先是一个字符串吗?

为什么说此方法期望参数 1 是有效路径

为了清楚起见,我不是在调用 loadHTMLFile(),而是在调用 loadHTML()

谢谢。

最佳答案

您受到 one of PHP bugs 的影响.该问题仅出现在 PHP 5.6.8 和 5.6.9 中。很可能您已经影响了服务器上的 PHP 版本,以及您本地主机上的无错误版本。

该错误本身会禁止您正在加载的 HTML 文档中出现所有空字符,因此作为一种解决方法,您可以尝试在进一步解析之前删除这些(实际上不需要的)字符。

$document = new DOMDocument();
$p_result_without_null_chars = str_replace("\0", '', $p_result)
$document->loadHTML($p_result_without_null_chars);

关于PHP DOM loadHTML() 方法异常警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30925533/

相关文章:

php - PHP 中存储过程 MySQL 的调用计数结果

javascript - 未捕获的语法错误 : Unexpected end of JSON input [}

javascript - .getAttribute ("name") 和 .name 有什么区别?

javascript - 如何将文本附加到 select2 中的所选项目?

javascript - 将 Javascript 事件添加到 SVG <def> 元素而不是直接添加到子元素上?

python - 从 Web 服务器产生类似文件的响应是如何工作的?

c++ - 需要在 C++ 中使用 Qt 4.7 创建 http 网络服务器

php - SSL 重定向 .htaccess 不工作

javascript - PHP 服务器无法使用 ajax 接收 javascript 对象

http - 缓存静态内容