Forum Webscript.Ru

Программирование => Perl => Тема начата: от 06 Ноября 2001, 16:19:25

Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: от 06 Ноября 2001, 16:19:25
смотри Subject
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: lodevar от 06 Ноября 2001, 16:24:37
Почитай про HTML::Parser
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: NeoNox от 07 Ноября 2001, 11:28:08
Цитировать
Почитай про HTML::Parser

... или соорудить конструкцию при помощи регэкспа.
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: cyberg от 07 Ноября 2001, 13:28:26
Может так?

$text =~ s/<([^>]|\\n)*>//g;
$text =~ s/$text =~ s/>//g;
Название: а так
Отправлено: Green Kakadu от 07 Ноября 2001, 15:00:34
$text =~s/<[^>]+>//g;
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: Haze от 07 Ноября 2001, 17:26:34
а как насчет > < в тексте?
Предлагаю использовать ту особенность, что, после < идет буква лат. алфавита без пробела (по крайней мере обычно :) )

s/<[a-zA-z][^>]*>//g
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: NeoNox от 08 Ноября 2001, 11:33:14
Да еще на пробел перед > и после буквы/цифры не мешало бы проверочку создать...
s/<[a-zA-z][^>]* *>//g
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: Haze от 08 Ноября 2001, 11:42:38
NeoNox

Цитировать
Да еще на пробел перед > и после буквы/цифры не мешало бы проверочку создать...


Зачем??? Ведь в тегах после < всегда идет закрывающая > и для других целей она использоваться не может!
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: NeoNox от 08 Ноября 2001, 11:52:01
Цитировать
Зачем??? Ведь в тегах после < всегда идет закрывающая > и для других целей она использоваться не может!

а вот и не правда ваша :)
в спецификации ХТМЛ сказано, что перед закрывающей скобкой допускаются пробелы!
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: dimfish от 08 Ноября 2001, 12:15:32
Как надежно удалить <хтмл-теги> из тескта
надежно можно с HTML::Parser - конечно можно самому извращаться - но зачем изобретать велосипед?
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: lodevar от 08 Ноября 2001, 12:19:19
Цитировать
надежно можно с HTML::Parser
Все возвращается на круги свои.
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: dimfish от 08 Ноября 2001, 12:23:53
lodevar
дык первый ответ был исчерпывающий ;)
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: lodevar от 08 Ноября 2001, 12:27:20
вот и я про то.
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: NeoNox от 08 Ноября 2001, 12:32:41
Цитировать
дык первый ответ был исчерпывающий

В споре рождается истина! :)
Хотя, я бы все-таки через регэксп делал.
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: Haze от 08 Ноября 2001, 12:43:12
Цитировать
а вот и не правда ваша  
в спецификации ХТМЛ сказано, что перед закрывающей скобкой допускаются пробелы!


Да я не про то! Я про то, что если тег начался, то в нем не могут использоваться ">", кроме как для закрытия! Поэтому проверка на пробел излишняя...
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: cyberg от 09 Ноября 2001, 06:46:57
а где прочитать про HTML::Parser ???
Название: То, что нужно по теме беседы здесь:
Отправлено: lodevar от 09 Ноября 2001, 09:22:22
http://www.eugene.dp.ua/Superadmin/perl/chapter20/20_1.htm#206

З.Ы. Это перепечатка Perl Cookbook (c) O\'RELLY

Так что: "покупайте книги товарищи. Книга - лучший друг человека" (чей-то лозунг).:D
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: от 09 Ноября 2001, 18:13:01
Цитировать
Да я не про то! Я про то, что если тег начался, то в нем не могут использоваться ">", кроме как для закрытия! Поэтому проверка на пробел излишняя...

Интересное мнение а как насчет такого \'проблемы>> Пупкина\'> В ALT все будет показываться как надо с ->>>, короче ВОПРОС ТОТ ЖЕ ???????
Название: та же
Отправлено: от 09 Ноября 2001, 18:17:12
как я понял Парсер для собственного сервера, а у меня хостинг на кудыкиной горе и ни как я его туды не закину, если не прав поясните плиз потому как я пронего читал но мой хостинг его не поддерживает
Название: та же
Отправлено: от 09 Ноября 2001, 18:23:22
а как Вам например тотже вариант с IMG но при этом тег разделен на две или три строки
src=\'Пупкин.gif\'
 alt=\'проблемы ->>> Пупкина\'>  А .....???????
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: Haze от 10 Ноября 2001, 03:07:42
Тогда используй модуль... На самом деле проблем может быть очень много, но в данном случае:

s/<[A-za-z]([^\'">]*[\'"][^\'"]*?[\'"])*[^>]*>//sig

Это, конечно, сплошное извращение, а не выражение :), оптимизировать надо, да и опять же что-нибудь пропустит :) Думать надо долго и мучительно, а это такое неблагодарное занятие...
Название: Как удалить множество пустых строк в одну
Отправлено: от 14 Ноября 2001, 15:05:39
После удаления ХТМЛов остается туча пустых строк, надобно их схлопнуть в одну
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: lodevar от 14 Ноября 2001, 15:56:46
Цитировать
а у меня хостинг на кудыкиной горе и ни как я его туды не закину
хостера в студию... :)
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: от 27 Ноября 2001, 21:50:15
Казахский вариант :D

$mail="f:/mail.html";
open (OUT, "<$mail");
$sort="f:/txt.txt";
open (IN, ">$sort");

undef ($/);
$_=;

$_=~s/\\<+?style.+?\\<+?\\/style\\+?>//isg;# смерть теблицам стилий Если я павелно это понимю
$_=~s/\\<+?SCRIPT.+?\\<+?\\/SCRIPT+?\\>//isg;# смерть скриптам
$_=~s/\\<+?.+?\\>+?//sg;#теги выкусывает любые однозначно С комментарияме правде есть пролема
$_=~s/(\\s+\\n\\n)//sg;#находит и убивает много лишних переводов строки НЕ ВСЕ

print IN $_;

Осталась одно только проблема на мой взгляд
вот из такой строки
остоётся "-->"

Если ктото заметит что скрипт работает криво высылайте пожалысто код который скрипт ненашол
добавим пофиксим исправим

ююю
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: от 27 Ноября 2001, 22:04:54
Казахский вариант  :D

Блин опять закривулил Устал навегное нуно спать

$_=~s/\\<+?style.+?\\<+?\\/style.+?\\>//isg;# смерть  теблицам стилий
$_=~s/\\<+?SCRIPT.+?\\<+?\\/SCRIPT.+?\\>//isg;# смерть скриптам
$_=~s/\\<+?.+?\\>+?//sg;#теги выкусывает любые однозначно С комментарияме правде есть пролема
$_=~s/(\\s+\\n\\n)//sg;

ююю
Название: Как надежно удалить <хтмл-теги> из тескта
Отправлено: от 03 Декабря 2001, 17:25:17
$value =~ s/\\ $value =~ s/\\>/>/gi;
Название: ж)
Отправлено: Green Kakadu от 03 Декабря 2001, 17:46:43
Цитировать
$value =~ s/\\$value =~ s/\\>/>/gi;

типа круто. только не по теме немножко... :)