XML-парсер против регулярных выражений - PullRequest
1 голос
/ 17 августа 2011

Что мне использовать?

Я собираюсь получить ссылки, изображения, текст и т. Д. И использовать его для построения статистики SEO и анализа страницы.

Что вы рекомендуете использовать? Анализатор XML или регулярное выражение

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

Итак, если все работает хорошо с регулярным выражением, почему я здесь, чтобы спросить вас, что использовать? Ну, я думаю, что хотя все было хорошо до сих пор, это не значит, что так будет и в будущем, поэтому я просто хотел узнать, в чем преимущества использования парсера XML вместо регулярных выражений? Есть ли улучшения в производительности, меньше ошибок, улучшена поддержка, другие функции блеска и т. Д.?

Если вы предлагаете использовать XML-парсер, то какой рекомендуется использовать с PHP

Мне бы очень хотелось узнать, почему вы выбираете одно над другим?

Ответы [ 3 ]

5 голосов
/ 17 августа 2011

Что я должен использовать?

Вы должны использовать Анализатор XML .

Если вы предлагаете использовать анализатор XMLзатем, который рекомендуется использовать с PHP

См .: Надежный и зрелый анализатор HTML для PHP .

2 голосов
/ 17 августа 2011

Если вы обрабатываете HTML реального мира (X), тогда вам понадобится анализатор HTML, а не анализатор XML, потому что синтаксические анализаторы XML должны прекратить синтаксический анализ, как только они обнаружат ошибку правильной формы, которая будет почти равнасразу с большинством HTML.

Смысл использования регулярных выражений для обработки HTML в том, что он ненадежен.Для любого регулярного выражения будут HTML-страницы, на которых он потерпит неудачу.Синтаксические анализаторы HTML так же просты в использовании, как и регулярные выражения, и обрабатывают HTML точно так же, как и браузер, поэтому они намного надежнее и редко есть какая-либо причина не использовать их.

Одним из возможных исключений является выборка для статистических целей.,Предположим, вы собираетесь отсканировать 100 000 веб-страниц на наличие довольно простого шаблона, например, наличия определенного атрибута, и получить процент совпадений с полученными страницами.Хотя даже хорошо разработанное регулярное выражение, скорее всего, будет давать как ложные срабатывания, так и ложные отрицания, они вряд ли сильно повлияют на общий процентный показатель.Вы можете быть в состоянии принять эти ложные совпадения для того, чтобы сканирование регулярных выражений могло выполняться быстрее, чем полный анализ каждой страницы.Затем вы можете уменьшить количество ложных срабатываний, выполнив синтаксический анализ только на страницах, которые возвращают совпадение с регулярным выражением.

Чтобы узнать, какие проблемы могут вызвать затруднения для регулярных выражений, см. Можете ли вы предоставить некоторыепримеры того, почему трудно анализировать XML и HTML с помощью регулярного выражения?

0 голосов
/ 17 августа 2011

Для меня это звучит так, как будто вы делаете скриншот с экрана.Это неизбежно несколько эвристический процесс - вы ищете шаблоны, которые обычно встречаются на интересующих веб-страницах, и вы неизбежно пропустите некоторые из них, и вы на самом деле не возражаете.Например, вам не важно, что при поиске по тегам img также будет найден тег img, который закомментирован.Если это характеризует ваше приложение, то обычные ограничения на использование регулярных выражений для обработки HTML или XML могут не применяться в вашем случае.

...