Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > вытянуть узел из HTML-кода: PCRE или DOM?


Автор: TUMS 16.8.2009, 23:15
Скорее опрос, нежели вопрос.

Допустим у нас есть 40000 html-страниц с одинаковой структурой. Допустим что на них все теги закрыты так как надо. Допустим что надо из страниц достать один див с каким-то id.

Что бы использовали вы: preg_match() или DOM::getElementById() ?

Добавлено через 31 секунду
SamDark голосует за PCRE smile

Автор: IZ@TOP 17.8.2009, 11:43
http://php.net/xmlreader - как вариант)

Автор: TUMS 19.8.2009, 01:04
IZ@TOP, 
Код

$dom = new domDocument;
$dom->loadHTMLFile($url);
$dom->preserveWhiteSpace = false;
$content = $dom->getElementsByTagId('MegaID');


Как это будет выглядеть в Вашем варианте, и насколько быстрее?

Автор: BrainWorker 24.8.2009, 23:52
Код

$id = 'some_id';
preg_match('<div\s.*?id\s*=\s*"' . preg_quote($id) . '"/', $text);

Автор: IZ@TOP 25.8.2009, 11:31
TUMS, php.net/xmlreader. Сильно разница будет заметна исключительно на больших объемах, потому как ридер использует http://ru.wikipedia.org/wiki/SAX парсер. И как бы есть предположение, что SAX парсеры используются для построения дома. Так что, думайте сами.

Автор: SamDark 25.8.2009, 14:55
Если DOM не меняется — тут есть выбор. Если некоторые части могут меняться — лучше использовать PCRE т.к. так мы получим меньше зависимостей (ориентироваться можно на отдельный блок, а не на положение этого блока в DOM).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)