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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Kirill Solomko                       2:5020/400     12 Mar 2002  22:07:36
 To : Andrey Sapozhnikov
 Subject : Re: регистр!?!
 -------------------------------------------------------------------------------- 
 
 Andrey Sapozhnikov <sapa@icb.chel.su> wrote:
 
 > Denis Roshchin wrote:
 >> Добрый день.
 >> 
 >> Мне надо разобрать html-файл и вынуть оттудова
 >> некоторые значения. (в часности то, что между
 >> <title> и </title> и некоторые meta-тэги).
 >> проблема в том, что оно может быть как в маленьких так
 >> и в больших буквах написано (именно системные слова,
 >> то есть "title", "Title", или "TITLE".)
 >> я сделал, все работает, но программа завалилась в момент
 >> когда появилась html-ка где все написанно большими буквами :((
 >> 
 >> у меня, допустим:
 >> $content =~ /.*<meta name="creator" content="(.*)">.*/g;$creator = $1;
 >> 
 >> ps. ну я понимаю, что можно пройти напролом, да при считывании все символы
 >> поднять (uc, да?) - но мне нужно само значение-то
 >> с правельным регистром. (то есть можно два раза один и тот-же
 >> файл открывать, в одном искать, во втором уже по номеру символа но
 >> муторно... может проще как??)
 > 
 > Прочитать perldoc perlop и perldoc perlre на предмет модификатора i в
 > регулярных выражениях. Кроме того, модификатор g в данном случае не
 > нужен. Кроме того, начальная .* и конечная .* тоже не нужны. А
 > вместо (.*) явно стоит использовать (.*?). Еще стоит проверить
 > результат выражения, ибо может данного тега в строке и не встретиться.
 > Hу а на досуге почитать perldoc HTML::Parser. Если этот скрипт не разовая
 > поделка, то возможно этот модуль Вам пригодится.
 > 
 > Андрей
 > 
 
 perldoc HTML::Parser - тебе поможет :-)
 
 навскидку для твоей задачи:
 
 #!/usr/bin/perl -w
 #
 use strict;
 use HTML::Parser;
 
   my $file = '/tmp/mytest.html';
   HTML::Parser->new(api_version => 3, unbroken_text => 1,
                     handlers => [start => [\&start_h,"self,tagname"],
                                  end   => [\&end_h,"self,tagname"],
 
    ])->parse_file($file) or die "Can't start parsing file: $!\n";
 
 sub start_h {
   my ($self,$tag) = @_;
   return unless $tag eq 'title';
   $self->handler(text => \&text_h,"text");
 }
 
 sub end_h {
  my ($self,$tag) = @_;
  $self->eof if $tag eq 'title';
 }
 
 sub text_h {
  my $text = shift;
  $text =~ s/\s+//g;
  print $text,"\n"; # or do whatever you need :-)
 }
 -- 
 / Loki /
 --- ifmail v.2.15dev5
  * Origin: Unknown (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 регистр!?!   Denis Roshchin   12 Mar 2002 15:21:39 
 Re: регистр!?!   Andrey Sapozhnikov   12 Mar 2002 15:32:01 
 Re: регистр!?!   Kirill Solomko   12 Mar 2002 22:07:36 
Архивное /ru.perl/9138918ce841.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional