PHP Dom документа HTML быстрее или функция preg_match_all быстрее? - PullRequest
4 голосов
/ 04 января 2011

Я сомневаюсь, что какой из них быстрее обрабатывается?

dom document или preg_match_all с функцией curl быстрее при разборе html-страницы ??и функция документа dom оставит след на другом сервере как функция curl?Например, в функции curl мы используем пользовательский агент, чтобы определить, кто обращается, но в документе dom ничего нет.

Ответы [ 3 ]

5 голосов
/ 04 января 2011

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

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

См. http://htmlparsing.com/regexes.html,, который я начал решать для этого общего вопроса.(И для всех остальных, кто читает это, я могу воспользоваться помощью. Источник находится на github, и мне нужны примеры для разных языков.)

1 голос
/ 04 января 2011

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

Хотя регулярные выражения можно использовать для сопоставления с HTML, для этого нужно приложить серьезные усилияс надежным парсером . PHP предлагает множество собственных расширений для надежной работы с XML (и HTML).Существует также ряд сторонних библиотек.См. Мой ответ на

Что касается отправки пользовательского пользовательского агента, это возможно и с DOM.Вам необходимо создать пользовательский контекст потока и присоединить его к базовым функциям libxml .Таким способом вы можете указать любой из доступных параметров контекста HTTP Stream .Смотрите пример ответа

, чтобы узнать, как предоставить пользовательский агент UserAgent.

0 голосов
/ 04 января 2011

функции dom не имеют ничего общего с получением html.

однако существуют функции загрузки, которые можно использовать для непосредственного извлечения ресурсов http.

они покажут то же поведение, что и file_get_contents без контекстных параметров.

что касается другой части вашего вопроса. Прег функции быстрее. однако они не предназначены для такого использования, и вы, вероятно, пожалеете, что очень скоро их используете.

Если вы анализируете html с помощью регулярных выражений, вы либо просто безумно круты, либо просто не понимаете html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...