|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Tarasov Sergej 2:5020/175.2 30 Apr 2001 12:21:33 To : Pavel V. Ammosov Subject : Re: Отодрать текст от тэгов -------------------------------------------------------------------------------- Sun Apr 29 2001 18:45, Pavel V. Ammosov wrote to All: >> >> Поделитесь плиз скриптом, который считывал бы *.htm файл и извлекал >> >> оттуда значимый текст свободный от тэгов(без сохранения >> >> форматирования), другими словами в результате работы, получался бы >> >> текст, который видит пользователь в броузере при просмотре этого >> >> файла. PA> а параграфы? PA> а таблицы? Просили без сохранения форматирования. Хотя предыдущий код все равно споткнется на многих файлах. Лучше использовать модули, а если без модулей, я делаю так: local $/; $html_text = <FILE>; $html_text =~ s/<!--.*?-->/ /igs; $html_text =~ s/<script.*?<\/script>/ /igs; $html_text =~ s/<style.*?<\/style>/ /igs; $html_text =~ s/<[^>]*>/ /gs; $html_text =~ s/(&.*?;)/&esc2char($1)/egs; $html_text =~ s/\s+/ /gs; Подавляющее большинство файлов такой код обрабатывает нормально. Хотя все равно можно встретить файлы, которые он не сможет обработать. sub esc2char { my ($esc) = @_; my $char = " "; if ($esc =~ /&[a-zA-Z]*;/) { $char = $html_esc{$esc} } elsif ($esc =~ /&x([0-9]{1,3});/) { $char = chr($1) } return $char; } %html_esc = ( "À" => chr(192), "Á" => chr(193), "Â" => chr(194), "Ã" => chr(195), "Ä" => chr(196), "Å" => chr(197), "Æ" => chr(198), "Ç" => chr(199), "È" => chr(200), "É" => chr(201), "&Eirc;" => chr(202), "Ë" => chr(203), "Ì" => chr(204), "Í" => chr(205), "Î" => chr(206), "Ï" => chr(207), "Ð" => chr(208), "Ñ" => chr(209), "Ò" => chr(210), "Ó" => chr(211), "Ô" => chr(212), "Õ" => chr(213), "Ö" => chr(214), "×" => chr(215), "Ø" => chr(216), "Ù" => chr(217), "Ú" => chr(218), "Û" => chr(219), "Ü" => chr(220), "Ý" => chr(221), "Þ" => chr(222), "ß" => chr(223), "à" => chr(224), "á" => chr(225), "â" => chr(226), "ã" => chr(227), "ä" => chr(228), "å" => chr(229), "æ" => chr(230), "ç" => chr(231), "è" => chr(232), "é" => chr(233), "ê" => chr(234), "ë" => chr(235), "ì" => chr(236), "í" => chr(237), "î" => chr(238), "ï" => chr(239), "ð" => chr(240), "ñ" => chr(241), "ò" => chr(242), "ó" => chr(243), "ô" => chr(244), "õ" => chr(245), "ö" => chr(246), "÷" => chr(247), "ø" => chr(248), "ù" => chr(249), "ú" => chr(250), "û" => chr(251), "ü" => chr(252), "ý" => chr(253), "þ" => chr(254), "ÿ" => chr(255), " " => " ", "&" => " ", ""e;" => " ", ); --- ifmail v.2.15 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3300bb482371.html, оценка из 5, голосов 10
|