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


ru.website

 
 - RU.WEBSITE -------------------------------------------------------------------
 From : Serge Shikov                         2:5020/400     08 Jul 2000  12:30:49
 To : All
 Subject : Re: вырезание атрибутов
 -------------------------------------------------------------------------------- 
 
 Andrej Ramaszeuski wrote:
 
 > 
 >  >> Регекспы годятся для всего.
 >  SS> Hе надо сказок. Регекспы не предназначены для разбора рекурсивных
 >  SS> структур, какой является HTML.
 > С коих поp html стал pекуpсивным?
 
 С тех, когда внутри одного тэга стало можно вкладывать другие. Т.е. от
 рождения. <b><i><b>Text</b></i></b> - типичный пример b внутри b.
  
 >  >>  SS> Для этого HTML::Parser имеется.
 >  >> Разговоp шёл о фильтpации а не паpсинге.
 >  SS> А давай ты сначала посмотришь на то, что предлагают, а потом уж будешь
 >  SS> лезть со своими пятью копейками. В комплекте HTML::Parser есть модуль
 >  SS> HTML::Filter, который именно фильтр для HTML и есть.
 > А тепеpь давай откpоем Parser.pm и Filter.pm и не поленимся изучить текст.
 > Hикаких бинаpных модулей они не используют.
 
 Про бинарные это ты к чему? Я нигде не говорил, что это надо не на перле
 писать.
 
 > Зато pегекспы там написаны гpамотные. Можно пользовать :)
 
 HTML::Filter вообще никаких регекспов не содержит, если ты как следует
 взглянешь. Т.е. совсем - в нем всего-то 19 строчек. Что же касается
 парсера, то регекспы там конечно есть, только разбор сделан вовсе не с
 их помощью. Регекспы занимаются своим делом - распознают отдельные
 лексемы. Все остальное делается при помощи лома и какой-то матери, т.е.
 обычными if-ами и while, которые вовсе не регекспы, как ты понимаешь. А
 если ты еще посмотришь, то найдешь кусок для разбора start-tag, который
 представляет из себя большой такой if then elsif elsif ... else, строк
 на 70. И который тоже вовсе не регексп. И наконец вернемся к нашим
 баранам - к атрибутам то есть. Вот кусок, который их разбирает:
 
    while ($$buf =~ s|^(([a-zA-Z][a-zA-Z0-9\.\-_]*)\s*)||) {
        $eaten .= $1;
        my $attr = lc $2;
        my $val;
        # The attribute might take an optional value (first we
        # check for an unquoted value)
        if ($$buf =~ s|(^=\s*([^\"\'>\s][^>\s]*)\s*)||) {
       $eaten .= $1;
       $val = $2;
       HTML::Entities::decode($val);
        # or quoted by " or '
        } elsif ($$buf =~ s|(^=\s*([\"\'])(.*?)\2\s*)||s) {
       $eaten .= $1;
       $val = $3;
       HTML::Entities::decode($val);
                     # truncated just after the '=' or inside the
 attribute
        } elsif ($$buf =~ m|^(=\s*)$| or
            $$buf =~ m|^(=\s*[\"\'].*)|s) {
       $$buf = "$eaten$1";
       last TOKEN;
        } else {
       # assume attribute with implicit value
       $val = $attr;
        }
        $attr{$attr} = $val;
        push(@attrseq, $attr);
    }
 
 если это называется регексп, то я ваще молчу.
 --- ifmail v.2.15dev5
  * Origin: home (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 вырезание атрибутов   Dmitry Ochnev   04 Jul 2000 23:14:26 
 Re: вырезание атрибутов   Serge Shikov   05 Jul 2000 09:17:07 
 вырезание атрибутов   Andrej Ramaszeuski   05 Jul 2000 16:48:45 
 Re: вырезание атрибутов   Serge Shikov   06 Jul 2000 20:24:17 
 вырезание атрибутов   Andrej Ramaszeuski   07 Jul 2000 18:48:21 
 вырезание атрибутов   Alexander Temerev   08 Jul 2000 08:06:52 
 вырезание атрибутов   Andrej Ramaszeuski   08 Jul 2000 15:42:13 
 Re: вырезание атрибутов   Serge Shikov   09 Jul 2000 00:44:47 
 вырезание атрибутов   Alexander Temerev   09 Jul 2000 12:59:54 
 вырезание атрибутов   Andrej Ramaszeuski   09 Jul 2000 14:34:54 
 Re: вырезание атрибутов   Serge Shikov   11 Jul 2000 22:46:13 
 вырезание атрибутов   Andrej Ramaszeuski   09 Jul 2000 12:39:49 
 вырезание атрибутов   Igor Mikhailov   09 Jul 2000 23:56:26 
 вырезание атрибутов   Andrej Ramaszeuski   10 Jul 2000 16:49:56 
 вырезание атрибутов   Igor Mikhailov   13 Jul 2000 03:38:03 
 вырезание атрибутов   Andrej Ramaszeuski   12 Jul 2000 22:04:32 
 Re: вырезание атрибутов   Serge Shikov   11 Jul 2000 22:45:54 
 вырезание атрибутов   Andrej Ramaszeuski   11 Jul 2000 22:45:23 
 вырезание атрибутов   Alex Kharitonov   13 Jul 2000 02:14:00 
 Re: вырезание атрибутов   Serge Shikov   13 Jul 2000 14:48:23 
 вырезание атрибутов   Mikhail Fedotov   14 Jul 2000 11:15:28 
 вырезание атрибутов   Dmitry Ochnev   09 Jul 2000 11:15:06 
 вырезание атрибутов   Mikhail Fedotov   10 Jul 2000 07:55:37 
 вырезание атрибутов   Andrej Ramaszeuski   10 Jul 2000 17:07:08 
 вырезание атрибутов   Alex Kharitonov   12 Jul 2000 02:10:51 
 вырезание атрибутов   Mikhail Fedotov   12 Jul 2000 06:17:06 
 Re: выpезание атpибyтов   Mark Shevchenko   12 Jul 2000 11:10:01 
 выpезание атpибyтов   Andrej Ramaszeuski   12 Jul 2000 18:51:16 
 Re: выpезание атpибyтов   Mark Shevchenko   13 Jul 2000 09:31:07 
 выpезание атpибyтов   Alex Kharitonov   13 Jul 2000 09:47:24 
 Re: вырезание атрибутов   Serge Shikov   12 Jul 2000 17:47:11 
 вырезание атрибутов   Andrej Ramaszeuski   12 Jul 2000 19:15:53 
 вырезание атрибутов   Mikhail Fedotov   12 Jul 2000 23:18:38 
 вырезание атрибутов   Vladimir Shilov   11 Jul 2000 13:36:07 
 вырезание атрибутов   Dmitry Ochnev   11 Jul 2000 23:22:02 
 Re: вырезание атрибутов   Serge Shikov   12 Jul 2000 17:47:35 
 вырезание атрибутов   Alexander Temerev   13 Jul 2000 19:51:07 
 вырезание атрибутов   Andrej Ramaszeuski   11 Jul 2000 22:40:13 
 вырезание атрибутов   Dmitry Gilev   12 Jul 2000 08:34:42 
 вырезание атрибутов   Dmitry Ochnev   13 Jul 2000 22:43:28 
 вырезание атрибутов   Dmitry Gilev   15 Jul 2000 12:36:40 
 вырезание атрибутов   Dmitry Ochnev   16 Jul 2000 11:05:00 
 вырезание атрибутов   Ivan Malinin   01 Aug 2000 10:16:13 
 Re: вырезание атрибутов   Serge Shikov   08 Jul 2000 12:30:49 
 выpезание атpибутов   Pavel Korovkin   08 Jul 2000 10:56:44 
Архивное /ru.website/282543aae63c.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional