| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: X технологии > Как сделать из невалидного HTML-документа валидный |
| Автор: barcelona 1.8.2008, 11:56 |
| Здравствуйте! Мне необходимо обработать HTML-документ как XML. При этом этот HTML-документ до невозможности не валидный. Вопрос: существует ли готовая библиотека или скрипт на PHP, который бы из невалидных HTML-документов делал валидные? Заранее спасибо! |
| Автор: gta4kv 1.8.2008, 12:39 |
| Смешная шутка. Нет. |
| Автор: skyboy 1.8.2008, 13:18 | ||
в общем случае это невозможно. к примеру,
- как это разделить? или если вдруг закрывающий тег "потерялся" - в каком месте его вставить? нет, разбирайся с разметкой вручную. |
| Автор: barcelona 1.8.2008, 14:06 |
| Вот ч-о-о-орт! Этот документ поступает ко мне из источника, который не подправишь.... |
| Автор: bars80080 1.8.2008, 14:10 |
| значит парсить его не как xml, а обычными способами |
| Автор: skyboy 1.8.2008, 15:00 |
| barcelona, "невалидности" носят постоянный характер? пример почему не приводишь? |
| Автор: barcelona 1.8.2008, 15:07 |
| bars80080, а какие это обычные способы? Я откопал расширение php5 - tidy называется, оно не может подойти для чистки исходного HTML-документа? skyboy, документ кривой насквозь. Незакрытые теги, атрибуты тегов без кавычек - и вообще полный набор определения "невалидность". |
| Автор: skyboy 1.8.2008, 15:13 |
при желании можно вылечить регулярками. разве что, если в значении пробел, то автоматизировать распознание "это не отдельное значение, а к тому, предыдущему относится" не выйдет. ну, одиночные вроде <input> или <image> ещё можно закрыть теми же регулярками. но вот где ставить закрывающий тег для <p>? |
| Автор: bars80080 1.8.2008, 15:41 |
| обычные способы, это отыскивать нужную инфо по вехам, типа strstr(), preg_match(), парсить теми же регулярками и explode() геморно, и никак иначе. либо сумеешь заставить источник валидно отдавать, либо придётся работать эту кучу я к примеру свой источник одной инфо не сумел заставить, теперь в ручную |