У меня был следующий код, который отлично работает на моем localhost:
$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, а не объект, поэтому код довольно скоро попадает в фатальную ошибку.
Обратите внимание, что содержимое $p_result
абсолютно одинаково на внешнем сервере и на моем localhost.
Но почему это отображает такое предупреждение и почему оно не работает?
Разве это не loadHTML()
ожидает, что аргумент 1 будет в первую очередь строкой?
Почему он говорит, что этот метод expects parameter 1 to be a valid path
?
Просто для того, чтобы было ясно, что я не loadHTMLFile()
, я loadHTML()
.
Благодарю.
На вас влияет одна из ошибок PHP . Проблема присутствовала только в 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);