Альтернатива phpQuery, которая не падает при работе с неверной разметкой? - PullRequest
2 голосов
/ 22 марта 2012

Я использую phpQuery для разбора страниц, однако заметил, что при использовании его со страницами с недопустимой разметкой это приводит к

Неустранимая ошибка PHP: необработанное исключение «Exception» с сообщением «Error загрузка разметки XML '

Пример кода, оскорбляющего на странице:

<?xml version="1.0" encoding="iso-8859-2"?>
<link href="http://example.com/?foo=bar&baz=quz" />

Я бы хотел, чтобы phpQuery возвращал false для таких страниц, но, к сожалению, это приводит к мгновенной фатальной ошибке, мешающей мне что-то с этим сделать.

Ошибка возникает сразу же после инициализации phpquery, как phpQuery::newDocumentFile($page);

Мне действительно нравится phpQuery, поскольку он работает как jQuery, но я ищу альтернативное решение, которое работает с недействительными разметками.

Ответы [ 2 ]

5 голосов
/ 22 марта 2012

На самом деле сбой не вызван из-за неверной разметки.Сбой вызван тем, что вы не уловили исключение, которое генерирует недопустимая разметка.

Попробуйте выполнить инициализацию в режиме try-catch, например:

try {
    phpQuery::newDocumentFile($page);
    //Process the page here
} catch (Exception $e) {
    //What do we do if any of that fails?
}

Исключения становятся фатальными ошибками, если вы непоймать их.

1 голос
/ 22 марта 2012

Вы можете использовать PHP для проверки XML в первую очередь, прежде чем перейти к phpQuery.Вот хорошая хорошая статья о том, как проверять XML с помощью PHP.

...