HTML::TokeParser::Simple - HTML::TokeParser ��勉�ゃ�潟�帥�若����с�若�鴻��膂≦����˩戎���
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;
}
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_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��◒��篌若�勉����勉�������若�泣�цВ��������ŝ�������違�ŝ����ŝ����ŝ����������⓾�����荵純�с�����
筝�筝������������⓾�������������������������˨�壔�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