2009-06-25 2 views
0

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

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

$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 сделал бы это, и б) почему я не получаю никаких полезных результатов?


Update:

Если я ставлю в: $ файл = "test1.html"; $ dom = DOMDocument :: loadHTMLFile ($ file); if (! $ Dom) { echo "No Load!"; } 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.


Update2:

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

я получаю один и тот же вопрос. Если я положил:

$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-файл является 288KB. Это может быть проблема? Если да, то как бы мне приспособиться к этому?


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

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

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

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

ответ

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

ДокументDOM и/или SimpleXML могут выручить, если документ был искажен. Попробуйте что-нибудь наподобие:

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

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

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

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

+0

Отчет об ошибках включен. Использование условных выражений для $ dom или $ xml показывает, что они оба загружают (см. Обновления), но все равно ничего не получают на print_r. Является ли размер файла 288K проблемой? – Anthony