Не удается HTML парсер

Screjet

Новичок
Не удается HTML парсер

Люди! Кто работал над нечто, описанным ниже, поскажите ПЛЗЗ!
Как-то работал над HTML парсером, за основу взял готовый ПХП XML парсер, но и syntax error возник еще до начала парсинга:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 2.0 Transitional//EN">
меняю PUBLIC -> SYSTEM -- проходит..
В спецификации XLM атрибуты должны быть закавычены, а в HTML редко кто это делает, тоже ошибки.. Можно как-то "обойти/взломать"? (с) matrix
Вся идея такого парсера заключается в анализе HTML документов роботом, а процесс парсинга, думаю, значительно быстрее, чем грепать регулярными выражениями (на которых сие чудо пока и работает :( )..
 

Screjet

Новичок
По идее к XML можно (а может и нужно) как то монтировать DTD-файлы.. В частности скачал .dtd для HTML 2.0
Ктото пробовал?
 

slach

Новичок
вообще то рекомендация html 2.0 предусматривает кавычки

DTD сам по себе вообще тебе никакой пользы не даст... поскольку перед тем как проверять на DTD браузер приводит полученный из TCP сокета html к well-formed виду...

соответсвенно тебе все таки стоит покопаться в сырцах DOMXML extetnion и libxml2 ... там были ф-ции
 

[DAN]

Старожил PHPClub
Решал я такие задачи давным давно :)

Привести html к валидной форме можно с помощью tidy.
Великолепная прога - я довольно часто прибегаю к ее помощи.
http://tidy.sourceforge.net/

Ну а дальше любым XML-парсером работать.
Я, кстати, на одной их php-пьянок предлагал Антону такой вариант.
 

Screjet

Новичок
Люди! Получилось!
скачал libxml для DOM, так там есть конвертер html->xml(хочу еще этот модулек к пхп присобачить, кажись в ПХП его нету, есси есть, прошу срочно поправить меня, чтоб не изобретал велосипед)
так 600к файл, который 20сек обр. регуларными выражениями, сейчас проходит обработку за 4 сек :) т.е. выигрышь в 500%!
 

Flying

Guest
А насколько синтаксически правилен этот тестовый html документ? А то я пытался скармливать libxml различные странички с ужасным html кодом, он на них благополучно спотыкался. хотя это давненько было, может сейчас уже нормально обрабатывает....
 
Сверху