LINUX.ORG.RU

фильтр html-кода perl-кодом


0

0

нужно из html вырезать ненужные тэги (а также стили, ссылки на запрещённые сайты и так далее).

есть такой замечательный модуль - HTML::StripScripts::Parser, в котором есть очень удобная система правил с помощью которой можно сделать почти все задачи фильтра html. помимо прочего он так же закрывает незакрытые тэги - в общем приводит html к корректному виду

проблема в том, что этот модуль не работает.. или работает неправильно. короче он flash вырезает не обращая внимания на правила.. в cpan есть ещё несколько похожих модулей, но они тоже не работающие, что показалось мне очень странным.. такая нужная штука, куча модулей, и ниодин не работает.

кто что использует для такой задачи? может я чего-то не так делаю.. вроде проверил на разных машинах с разными перлами, одинакого непривильно действуют

--- Спасибо



Последнее исправление: none (всего исправлений: 1)

может я чего-то не так делаю.

Да, ты не используешь PHP.

Ты остаёшь в пользовании новейших технологий.

gamecoder
()
Ответ на: комментарий от gamecoder

Гыыыы. Пыхари будут рассказывать про современные технологии? не смешите!

helios ★★★★★
()
Ответ на: комментарий от none

самописное чтоли?

угу. будет работать быстро и ровно так, как тебе нужно.

задачка не сложная - можно и повелосипедить.

helios ★★★★★
()
Ответ на: комментарий от helios

ну в общем-то да.. уже почти готов делать самостоятельно, но лучше бы если бы готовое )

none
() автор топика
Ответ на: комментарий от Deleted

А ты думай, думай. Парсить HTML regexp'ами это из района садомазо.

perl создан для садо-мазо^W парсинга текста... В этом ему равных нет.

helios ★★★★★
()
Ответ на: комментарий от oh

А 20 000 модулей для просто так созданы? Нет, вечно надо регекс свой пихнуть!

DBI - офигительный модуль. Его я юзаю и радуюсь жизни.

А вот модуль, вырезающий html-теги ненужные я не юзаю. Ибо быстрее написать самому, чем искать его+разбираться в нём+исправлять его и тд...

helios ★★★★★
()
Ответ на: комментарий от Deleted

> Ну пробуй, пробуй, как столкнёшься — поймёшь :)

2 дня назад писал прилагу, качающую xml'ку, парсящуюю её (regexp) и сохраняющую структуру в базе SQLite.

С парсингом проблем ну вообще не было.

Кстати, вы в курсе конструкции /\G/gc ?

helios ★★★★★
()
Ответ на: комментарий от helios

Для тривиального XML(HTML) или с заранее известной структурой пойдет, для общего случая применить будет сложно, особенно для невалидного кода. Из постановки задачи видно, что невалидный код будет, и что парсеры, которые ты нашел, не работают. Что не удивляет, в общем-то :)
И что это задача вообще такая, вырезать ссылки на запрещенные страницы. Запрещенные страницы запрещают на прокси, зачем это всё?

SOmni ★★
()
Ответ на: комментарий от SOmni

Аккуратней «отвечай» (ты ответил не тому).

И что это задача вообще такая, вырезать ссылки на запрещенные страницы.

Ну не хочет человек, чтобы на его сайте люди ходили налево (вконтактик и прочее гугно) - вот и режет.

Вообще, смысла к этой задачке придумать можно много...

helios ★★★★★
()
Ответ на: комментарий от SOmni

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

в общем всем спасибо за советы. Действительно придётся самому делать это. почитал умных книжек, буду делать с помощью HTML::TokeParser, ибо знания regexp недостаточно у меня для такой задачи.

загоню туда может LR-таблицу из теории конструирования компиляторов и разбора текста по заданным граматикам :) вот веселуха будет.. ну может и по-другому сделаю. в общем подумаю ещё об этом

Спасибо всем, ещё раз

none
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.