Вопрос

Проблема возникает только с одним файлом, когда я пытаюсь выполнить метод DocumentDOM/SimpleXML, поэтому кажется, что проблема связана с этим файлом.Понятия не имею, что это может быть.

Если я сделаю следующее:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);

print_r($xml);

в Chrome я получаю сообщение об ошибке «Страница недоступна».В Firefox я ничего не получаю.

Если я сделаю то же самое, но с «test2.html», я получу распечатку, как и ожидалось.

Если я попробую то же самое, но сделаю это следующим образом:

$file = "test1.html";
$data = file_get_contents($file)
$dom = DOMDocument::loadHTML($data);
$xml = simplexml_import_dom($dom);

print_r($xml);

У меня та же проблема.

Если я закомментирую строку print_r, Chrome перейдет от «Страница недоступна» к пустой.

Я изменил разрешения на 777, если это проблема, исправления не будет.

Я попробовал просто вывести содержимое HTML, никаких проблем.

Есть какие-нибудь подсказки относительно того, почему а) Chrome это делает и б) почему я не получаю никаких полезных результатов?


Обновлять:

Если я вставлю:$file = "test1.html";$dom = DOMDocument::loadHTMLFile($file);if (! $ dom) {echo "нет нагрузки!";} else {$ xml = simplexml_import_dom ($ dom);print_r($xml);}

У меня та же проблема.Если я вставлю:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
if(!$dom) {
    echo "No Load!";
}
else {
    echo "Load!";
}

Я получаю "загрузку!" Вывод, что означает, что метод DOM не должен быть проблемой (?)

Я попробую тот же самый тест с файлом simplexml.


Обновление2:

Если я сделаю это:

У меня та же проблема.Если я вставлю:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
    echo "No Load!";
}
else {
    echo "Load!";
}

Я получаю "загрузку!" Но если я сделаю:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
    echo "No Load!";
}
else {
    echo "Load!";
    print_r($xml);
}

Я получаю ошибку.Наконец я заметил, что у меня есть возможность просмотреть ошибку в Chrome:

 Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error.

Неприятный html-файл имеет размер 288 КБ.Может ли это быть проблемой?Если да, то как бы я к этому приспособился?


Последнее обновление:

Очень странно.Я могу использовать методы и функции объекта (например, simplexml или domdocument), поэтому я могу делать такие вещи, как xpath, для удаления или анализа HTML и т. д.В некоторых случаях (небольшие результаты) он может отображать результаты, но для больших объектов (показать все диапазоны) он терпит неудачу таким же образом.

Итак, поскольку конечный результат, я думаю, будет соответствовать этим параметрам, я ДОЛЖЕН быть в порядке (я думаю).

Но любое реальное решение приветствуется.

Это было полезно?

Решение

  • Включите отчеты об ошибках: error_reporting(E_ALL); в первой строке вашего PHP-кода.
  • Проверьте ограничение памяти вашей конфигурации PHP: memory_limit в соответствующем php.ini
  • В чем разница между test1.html и test2.html?Возможно, test1.html неправильно сформирован.

Другие советы

DocumentDOM и/или SimpleXML могут выйти из строя, если документ имеет неверный формат.Попробуйте что-то вроде:

$dom = DOMDocument::loadHTMLFile($file);
if (!$dom) {
    echo 'Loading file failed';
    exit;
}

$xml = simplexml_import_dom($dom);
if (!$xml) {
    ...
}

Если создание $dom сработало, преобразование в $xml также должно работать, но все равно убедитесь.

Редактировать:Как сказал Гериг, убедитесь, что отчеты об ошибках включены, это должно сделать очевидным, где процесс завершается сбоем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top