|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 23 May 2002 15:14:19 To : "Alexander V. Gaiduk" Subject : Re: Hа: Удалить все html-теги из переменной, оставив содержание -------------------------------------------------------------------------------- Здравствуй, Alexander V. Gaiduk. AVG> > Доброго времени суток, уважаеммый(ая) Всем AVG> > AVG> > Есть ли какие-нибуть модули, которые позволяют это сделать? AVG> во народ, сразу модули... AVG> $str =~ s/(<(?=!--)([^>]|\n)*--(?=>)>)//ig; AVG> $str =~ s/|(<\/?([^>]|\n)*>)//g; AVG> на особых эстэтов, типа VW и AC это не расчитано :) А на особо специально обученных юзеров? Помню, ловил я баг с подобным разбором. Форум. Побеждается тупо - начинаем тег в одном сообщении, заканчиваем в другом. Автор кода проверки долго ругался и в итоге таки инвалидировал оставшиеся неприкаянными открывающиеся угловые скобки. Хотя у него код был умнее - твой побеждается чем-нибудь вроде <tag attr="<>">. В FAQ, что ли, написать?... s/<[^>]*>//g: <tag attr="<>"> -> <tag attr=""> s/<.*>//gs: <tag1>valid text<tag2> -> s/<.*?>//gs: <tag attr=">>"> -> >>"> Кроме того, все три варианта ничего не могут противопоставить злонамеренному или просто изощренному юзеру в форумах, где можно запостить два сообщения, или в формах, которые позволяют ввести два поля, показываемые на одной странице - начинаем тег в одном поле или сообщении, заканчиваем в другом. Мораль: после того, как Вы выкусили все, что могли, не забудьте инвалидировать все открывающие угловые скобки, которые остались. Варианты двух последних без модификатора /s, в том числе и с альтернативой \n, не рассматриваются ввиду незнания их авторами матчасти. Варианты первого _с_ модификатором s или с альтернативой \n - по той же причине. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/14454126c89db.html, оценка из 5, голосов 10
|