XPath->query работает по-разному на локальном и реальном сервере

программирование php html xml xpath

Выполняю такой простейший код на PHP (ищу все ячейки всех таблиц) в файле 1.html:
$f = file_get_contents("1.html");
$dom = DOMDocument::loadHtml($f);
$node = $xpath->query("//td");
echo "найдено " . $node->length . " ячеек таблиц";

Если запускаю код на локальном сервере, то получаю результат: найдено 832 ячейки во всём документе; если же запускаю код на рабочем сервере, то получаю результат: найдено 0 ячеек.

На других документах XPath работает без проблем. В чём может быть проблема.

Примечание:
На локальном и на боевом сервере парсеру посовывается один и тот же файл 1.html, выполняется один и тот же код, но результат получается разный!

Примечание:
Интересно, что любые другие файлы обрабатываются одинаково на локальном и рабочем сервер (скрипт находит одинаковое количество элементов).

Примечание:
Пробовал менять кодировку файла - не помогло.

Примечание:
Я разобрался. Оказывается, проблема была в том, что внутри HTML-страницы был символ Chr(03), на который ругался XPath. Я удалил этот символ из тела страницы и на боевом сервере всё заработало. Интересно, что на домашнем сервере всё работало и с этим символом.

Примечание:
Полночи занимался сексом с этой HTML-страницей. Проблема была в символе Chr(03).

Примечание:
NetRain, спасибо за совет!
Ответы:
В таких случаях помогает включение вывода ошибок (error_reporting(-1)). DOMDocument::loadHtml любит жаловаться на любые символы и теги, которые ему не нравятся (даже если к фатальным последствиям не приводят). А это отправная точка для разбирательств, почему что-то не работает.


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.