Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Отодрать текст от тэгов   Tarasov Sergej   30 Apr 2001 12:21:33 
Архивное /ru.perl/3300bb482371.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional