Skip to content

Latest commit

 

History

History
712 lines (459 loc) · 20.3 KB

File metadata and controls

712 lines (459 loc) · 20.3 KB

NAME

HTML::TokeParser::Simple - HTML::TokeParser ��勉�ゃ�潟�帥�若����с�若�鴻��膂≦����˩戎���

SYNOPSIS

use HTML::TokeParser::Simple;
my $p = HTML::TokeParser::Simple->new( $somefile );

while ( my $token = $p->get_token ) {
    # This prints all text in an HTML doc (i.e., it strips the HTML)
    next unless $token->is_text;
    print $token->as_is;
}

DESCRIPTION

HTML::TokeParser��壔��HTML���茹f����������勉�˨����ï����ŝ��筝���㋜����ŝ�<�純�������с����� ��с��������菴���c�〠�ャ�������若�壔�潟�壔�������障����頑Τ�����˨�虁В�����с����障�����:

["S",  $tag, $attr, $attrseq, $text]
["E",  $tag, $text]
["T",  $text, $is_data]
["C",  $text]
["D",  $text]
["PI", $token0, $text]

���������膂≦����˨�������������˨��HTML::TokeParser::Simple��с�壔�� 菴���c�〠�ャ�������若�壔�潟�˨�ゃ����⓾����⓾�若�吟����������頑Τ������(��������ɱ訓�����㏍�ャ�<�潟�����)莖ɱ�����絨���㏍�������������с�������������˨����障����� ��隙�������˨�壔��7��ゃ��is_foo��帥�ゃ����勉�<�純�������� 5��ゃ��return_bar��帥�ゃ����勉�<�純����������������障����� is_��<�純�������壔����若�壔�潟�勉�帥�ゃ�������ゆ�㏍�с�������������˨����⓾��return_��<�純�������壔��綽�荀���������������若�帥��緇������������������˨����障�����

��ŝ�潟�吟����í�ゃ�˨�������ゃ����勉�帥�違�����罕�膀������������������с����障����� ��������������勉�壔�����紮���帥�違�̹�∫�c�����絮���с��紊���������������������������������������� �����ゃ����������������c����������������ŝ�������違�ŝ����障�������������勖����醇�с�夌����粋昭��障����⓾����障�����

HTML::TokeParser::Simple��壔��HTML::TokeParser��勉�泣����壔�í�鴻�с�������� �����鴻�⓾��HTML::TokeParser��<�純����������ñ����с����障����� �����勉�≪�吾�ャ�若�˨�勛��箴<�������������˨�壔��HTML::TokeParser������HTML::Parser�� �����㏍�ャ�<�潟�����茯㏍����с��������������

篁ヤ����с�壔����ñ����с�������<�純�����������箴������������̥亜羹���̬ą��������障�����

is_ ��<�純�����

  • is_start_tag([$tag])

    ���紮���帥�違�������������í����������ゆ�㏍�������勉�˩戎��c�⓾�������������� ��ŝ����激�с�潟�������⓾��"��帥�違�帥�ゃ��"���羝<�������������с����障����� ��劫��������紮���帥�違����í�������˨����������������������������с����障����� 羝<����������帥�違�壠ぇ���絖����絨����絖������阪�ャ����障��������

    if ( $token->is_start_tag( 'font' ) ) { ... }

    ��ŝ����激�с�潟�������⓾��罩h�頫◐憗��綣���違��羝<����障����� �����⓾�勉����������帥��(h1, h2 ... h6)��˨�������������������������˨�壔��篁ヤ����勉�������˨����障��:

    if ( $token->is_start_tag( qr/^h[123456]$/ ) ) { ... }
  • is_end_tag([$tag])

    腟�篋���帥�違�������������í����������ゆ�㏍�������勉�˩戎�����障����� ��ŝ����激�с�潟�������⓾��"��帥�違�帥�ゃ��"���羝<�������������堺�ャ�障����� ��劫�����腟�篋���帥�違����í�������˨����������������������������с����障����� 羝<����������帥�違�壠ぇ���絖����絨����絖������阪�ャ����障��������

    腟�篋���帥�違�勉����鴻�������������������˨�壔����帥�違�勐����勉�鴻�í����激�ャ�壔�ŝ����激�с�潟�с�����

    while ( $token = $p->get_token ) {
      if ( $token->is_end_tag( 'form' ) ) { ... }
    }

    ��障�����:

    while ( $token = $p->get_token ) {
      if ( $token->is_end_tag( '/form' ) ) { ... }
    }

    ��ŝ����激�с�潟�������⓾��罩h�頫◐憗��綣���違��羝<����障�����

  • is_tag([$tag])

    ��í����ŝ�帥�違�������c�⓾����������ゆ�㏍�������勉�˩戎�����障����� ��ŝ����激�с�潟�������⓾��"��帥�違�帥�ゃ��"���羝<����障����� ��劫�������帥�違����í�������˨����������������������������с����障����� 羝<����������帥�違�壠ぇ���絖����絨����絖������阪�ャ����障��������

    if ( $token->is_tag ) { ... }

    ��ŝ����激�с�潟�������⓾��罩h�頫◐憗��綣���違��羝<����障�����

  • is_text()

    �����㏍�鴻����������c�⓾����������í����������ゆ�㏍�������勉�˩戎�����障����� 筝���цą���������return_text(荵処����������⓾�����)��<�純��������羞隙恒�����������������˨�������勉�с����������障�����鐚� is_text��壔����⓾�若�吟����後�������̬����⓾�����Web�����í�⓾�吟�ц;腓冴�������������㏍�鴻�����筝���眼�������с�����������

  • is_comment()

    ��障�����������茯㏍����с����障��鐚� 茯違��POD���茯㏍�帥�障�������� CLPM��˨�̬��������������������POD��勌賢��х��������������莖ɱ�����絨���㏍�⓾�� �����㋘�ゃ����˨�ŝ����勉����ャ����ŝ��鐚� ��������奝��������腓若�с�����

    ��㋚����с�����

    is_comment��壔����潟�<�潟����˩����眼����������勉�˩戎�����障����� ��潟�<�潟����˨�ゃ����⓾��������荅潟����������宴�壔��HTML::Parser ��勉����㏍�ャ�<�潟�����荀���⓾�������������� �����ŝ����������c�⓾�����篁ヤ����勉����������������障�����

  • is_declaration()

    HTML��勉����������˨�����DTD��˨�������������障�����(DTD���篏帥�c�⓾�障��������篏帥�c�⓾�ŝ����с�����鐚�)

  • is_process_instruction()

    �����㏍�祉�鴻�ゃ�潟�鴻����í�壔�激�с�潟��XML��肴昆��с����� PHP��◒��篌若�勉����勉�������若�泣�цВ��������ŝ�������違�ŝ����ŝ����ŝ����������⓾�����荵純�с�����

The return_ ��<�純�����

羈���

筝�筝������������⓾�������������������������˨�壔�c�������������⓾����障�����(��ɱ����ʃ昆��������鴻�������吾����������˨��������������茹c����⓾����障��)��� return_��<�純����������若�����������篏���勉�帥�ゃ����勉����若�壔�潟�������c�⓾����������������鴻�������鴻����с����� �����������違��腟�篋���帥�違����������違��retrun_attrseq��<�純�������勐�若�喝�冴����˩����勖�靸í����������障�������� 筝���ï����ŝ�<�純�������勐�若�喝�冴����勉�������˨��腥冴�勖��絖�������菴������������с�����������

is_��<�純�������勉��������羈������������⓾�壔�������������勉�<�純��������return_��������勐����壔��紊ф��絖�絨����絖������阪�ャ����障��������

  • return_tag()

    ���紮���帥�違��腟�篋���帥�違����������障�����鐚� �����勉�帥�ゃ�����菴������障��(絨����絖�)���

  • return_attr()

    ���紮���帥�違����������違����㏍�若��絮���с�勐����������ゃ��絮���с�勐�ゃ�勉����������激�ャ�ŝ����<�㋘�潟�鴻��菴������障�����

  • return_attrseq()

    ���紮���帥�違�˨����������������違����g��������絮���с�勰�������ŝ����<�㋘�潟�鴻��菴������障�����

  • return_text()

    �����勉�<�純�������壔��as_is��勉�������˨�������c�������⓾����障����������㏍�違�í����壔�� is_text������return_text������HTML::TokeParser::get_text��������勌参������羞隙恒�����⓾����障����� �����勖祁箙宴�壔����<�純�������勐����������吾�吟�������̹�≪����⓾�������������蚊�í����障�㋘����с��������������篋�絎���̬儀��������障�� :)

    �����勉�<�純�������勌戎�����壔�障�������������障�������с���������憜����虁⑥��������с�障�����

  • as_is()

    �����若�壔�潟��茵���������⓾����������勉�壔�ŝ����с�����罩g∈��ŝ����㏍�鴻����с�����

  • return_token0()

    �����㏍�祉����激�潟�違�ゃ�潟�鴻����í�壔�激�с�潟�с����������帥�違�勉�����緇���̬����ゃ����������������若�壔�潟��菴������障����� 箴�������: <?php ��ŝ����� "php" ���菴�������������絖������勐����障����˨�ŝ����障�����

��帥�違����潟�吾�潟�違�<�純�����

delete_attr()���set_attr()��<�純�������с�������㏍�違�í����壔�帥�医����с����ŝ�潟�吟����í�ゃ� ��吾����眼�������������с����障�������ŝ��HTML�����������˨����c��"荐�罩c��������"���������羂����篁������鴻����с����� ��鴻�˨����違�������帥�違�壠����⓾�勐����с��絨����絖���˨�ŝ����������勐�ゃ�奝�ï����˨�壔�í�若����������障�����

��ɱ����ч����������帥��(箴������違��<hr />)������罩g∈��˨����ゃ����������障����� �������𡉴�������í�⓾�吟�˨�壔����ɱ����ч����������������帥�違�˨�壔�����緇���勉�鴻�í����激�ャ����������̥Ã��純��綽�荀���������������勉����������障����� �����勉�������ŝ�鴻����若�鴻�����������HTML��ц��篁���������������������壔����勉�障�障�˨�ŝ����障�����

  • delete_attr($name)

    �����勉�<�純�������夌�劫����勐����с��羔���������������障����������勉�<�純�����������紮���帥�遺札紊���勌�������у�若�違����������� croak�����障�����綣���違�壠ぇ���絖����絨����絖������阪�ャ����障�������� ��с����������ャ�ʋ�号����с��羔���������������⓾�����絮���с��罩g∈��˨�����������������綽�荀������������障����� ���������絮���с��荀�篁���������ŝ�������違����<�純�������壔�帥�違��紊���眼�������̬�������障�����

    # <body bgcolor="#FFFFFF">
    $token->delete_attr('bgcolor');
    print $token->as_is;
    # <body>

    �����勉�<�純����������若�違�����緇���壔����������������違��as_id()������return_attr()�� return_attrseq()��<�純�������壩�贋�違��������腟�������菴������障�����

  • set_attr($name,$value)

    �����勉�<�純�������壔��絮���с�勐�ゃ����祉����������障�����絮���с��荀�篁���������ŝ�������違�� return_attrseq()��˨�����緇���˨�ŝ�鴻�������������違�����絮���с����������障����� 2��ゃ�勐����違�с�����

    # <p>
    $token->set_attr('class','some_class');
    print $token->as_is;
    # <p class="some_class">
    
    # <body bgcolor="#FFFFFF">
    $token->set_attr('bgcolor','red');
    print $token->as_is;
    # <body bgcolor="red">

    �����勉�<�純����������若�違�����緇���壔��as_is()���return_attr()���return_attrseq��<�純�������壔�� �����⓾����贋�違��������腟�������菴������障�����

  • rewrite_tag()

    �����勉�<�純�������壔����帥�違����吾����眼����障�������帥�違�勐�������������⓾�勐����с�勐�������壔��絨����絖���˨�ŝ����障����� ��������˨�壔�í�若����с�壔�í�若����������⓾����ŝ����ゃ�壔����壔�í�若����������障��������紮���帥�違�◐��篋���帥�違�勌検��鴻�у�若�違����障����� set_attr()���delete_attr()��勌検��鴻�������勉�<�純����������ゃ��菴������������若�吟��������羂����篁������⓾��������������

    ��帥�違�с�ŝ�������若�壔�潟�у�若�違��������������膣���̬�������障�������í�勉�������˨�<�純����������若�違�������������∴�������� �����若�壔�潟��菴������障�����

    # <body alink=#0000ff BGCOLOR=#ffffff class='none'>
    $token->rewrite_tag;
    print $token->as_is;
    # <body alink="#0000ff" bgcolor="#ffffff" class="none">

    ���������羝����HTML���膣���í�靛咲����˨�������˨�壔��罨<�勉�������˨����障��:

    my $parser = HTML::TokeParser::Simple->new( $ugly_html );
    while (my $token = $parser->get_token) {
        $token->rewrite_tag;
        print $token->as_is;
    }

���荀�篋����:

篋冴����˨�壩祁箙宴�����篋冴�������⓾�������若�泣�若�<�純�������������若�壔�潟�у�若�若����������������若�壔�潟�<�純�����(筝���цą��������障�����)������ ��<�純�������у�若�若����������障����� �����������蚊����������˨��HTML::TokeParser::Simple��勉����若�吾�с�� 1.4篁ヤ����с�壔���憜����� 篏����膓���帥����ŝ����違�������壔�í�鴻�������⓾�勉����若�壔�潟�� bless �����⓾����障����� �����勉�≪�吾�ャ�若�˨��篏帥��������綽���˨�������⓾�������⓾�����������(��������⓾�������勐�馹����腱���������������� PodMaster http://www.perlmonks.org/index.pl?node_id=107642��˨����⓾�����茗������障�����

箴�

��潟�<�潟�����荀���ゃ�����

������紊������c�������宴�勉�������˨�������������c��蕭ɱ����勉�����(PHB)��壔�� ��違�í����c����奝��������HTML��勉�潟�<�潟�����綵若��絲障����☗け腓若�ŝ��������������莨若����с�� 綵若�������������c�⓾�������◐∈篆<����⓾����障�����HTML�����������⓾�勉�潟�<�潟�����緇����綽�荀������������障�����

use strict;
use HTML::TokeParser::Simple;

my @html_docs = glob( "*.html" );

open PHB, "> phbreport.txt" or die "Cannot open phbreport for writing: $!";

foreach my $doc ( @html_docs ) {
    print "Processing $doc\n";
    my $p = HTML::TokeParser::Simple->new( $doc );
    while ( my $token = $p->get_token ) {
        next unless $token->is_comment;
        print PHB $token->as_is, "\n";
    }
}

close PHB;

��潟�<�潟�������壔��������

�����若����若��PHB��˨�壠����眼�����罔ï�í����������障�����HTML��勉�潟�<�潟����勉�祉�������í����� �����障��茵������壔����������障�������с����������違�í����c����奝����勐����⓾�������������˨�壔����˨�ŝ����障�������� �����������с��HTML�����������������勉�潟�<�潟�������壔����������ŝ�������違�ŝ����ŝ����ŝ����障��������

use strict;
use HTML::TokeParser::Simple;

my $new_folder = 'no_comment/';
my @html_docs  = glob( "*.html" );

foreach my $doc ( @html_docs ) {
    print "Processing $doc\n";
    my $new_file = "$new_folder$doc";

    open PHB, "> $new_file" or die "Cannot open $new_file for writing: $!";

    my $p = HTML::TokeParser::Simple->new( $doc );
    while ( my $token = $p->get_token ) {
        next if $token->is_comment;
        print PHB $token->as_is;
    }
    close PHB;
}

�����í�若����帥�違��紊���眼�����

篌�腓障�� foo.com ��с����������������c��篁� bar.com ��˨�ŝ����障�����筝�綛吾�ŝ�������˨�� 茯違�������������í�若����帥�違��action絮���с��"http://www.foo.com/"��������若����潟�若�����������羆冴�����HTML�����吾����⓾����障�������� "http://www.bar.com" ��˨��������紊������ŝ�������違�ŝ����障��������

use strict;
use HTML::TokeParser::Simple;

my $new_folder = 'new_html/';
my @html_docs  = glob( "*.html" );

foreach my $doc ( @html_docs ) {
    print "Processing $doc\n";
    my $new_file = "$new_folder$doc";

    open FILE, "> $new_file" or die "Cannot open $new_file for writing: $!";

    my $p = HTML::TokeParser::Simple->new( $doc );
    while ( my $token = $p->get_token ) {
        if ( $token->is_start_tag('form') ) {
            my $action = $token->return_attr->{action};
            $action =~ s/www\.foo\.com/www.bar.com/;
            $token->set_attr('action', $action);
        }
        print FILE $token->as_is;
    }
    close FILE;
}

���篏�罔

Copyright (c) 2001 Curtis "Ovid" Poe. All rights reserved. This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself

������

Curtis "Ovid" Poe poec@yahoo.com

�����

$HTML::Parser::VERSION���3.25�������𡉴�������勉��篏帥��������腟������������⓾��筝�罩g∈��ɱ�������������障����� �𡉴�������若�吾�с�潟�с�壔��XHTML���絽吾�˨�壩③��������������宴����ŝ����������с����� �����勉�潟�若����勐����������������㏍�違�í����勐��荀���������c�⓾��������������腆冴����������勉�壔�������㏍�違�í����勤岡篁祉�с�����

HTML::Parser��壔��512�����ゃ����勐�冴�障����с����㏍�鴻�������☎����������������˨��羂����篁������⓾�������������� �����勉����������������с�������������ɱ��������綣����莎激�������������������㏍�鴻�����紕������⓾��2��や札筝���勉����若�壔�潟�˨�ŝ�c����������障����� �����勐��������筝���勉�潟����潟����с����������������������с����障��:

$p->unbroken_text( [$bool] );

HTM::Parser�����㏍�ャ�<�潟�����http://www.perlmonks.org/index.pl?node_id=230667 �� �����������宴����������勉�с��荀���⓾��������������

�����違�㋘����若�������潟�<�潟����壩❶��勉�≪����㋘�鴻��: poec@yahoo.com��� �����違�㋘����若�������������������˨�壔��HTML::Parser������HTML::TokeParser������HTML::TokeParser::Simple������ Perl��勉����若�吾�с�潟�����篏帥�c�⓾�����OS��勉����若�吾�с�潟�����箴������⓾��������������

膺肢┳��˨�ゃ����

膺肢┳���鐚������ゆ�� (ktat.is@gmail.com)

Perl�����㏍�ャ�<�潟����ユ�㋝��荐� Project ��˨�⓾�� Perl��≪�吾�ャ�若�˨�������㏍�ャ�<�潟����勛浸荐潟��茵���c�⓾�������障�����

http://perldocjp.sourceforge.jp
http://sourceforge.jp/projects/perldocjp/
http://www.freeml.com/ctrl/html/MLInfoForm/perldocjp@freeml.com
http://www.perldoc.jp