#!/usr/local/bin/perl
####################################################
# Entity::Convertor #
$script = "entity.cgi"; #
$ver = "v1.00"; # 2006/11/29 #
# Copyright (c) MagokoroPlanning #
# postmaster@magokorokikaku.com #
$home = "http://magokorokikaku.com/"; #
####################################################
&decode;
if ($mode eq 'regist') { ®ist; }
&html;
#-------------------------------------------------
# 入力フォームを表示
#-------------------------------------------------
sub html {
&header;
print <<"EOM";
メールアドレスをエンティティ・コード(数値文字参照)に変換します
EOM
&footer;
exit;
}
#-------------------------------------------------
# 変換結果を表示
#-------------------------------------------------
sub regist {
if ($enco) { &encode10; }
else { &encode16; }
&header;
print <<"EOM";
エンティティ・コードに変換されました
以下が、あなたのメールアドレスです。
EOM
&footer;
exit;
}
#-------------------------------------------------
# decode
#-------------------------------------------------
sub decode {
read STDIN,$input,$ENV{'CONTENT_LENGTH'};
@pairs = split(/&/,$input);
foreach $pair (@pairs) {
($list, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$list} = $value;
}
$mail = $FORM{'mail'};
$mode = $FORM{'mode'};
$enco = $FORM{'enco'};
}
#-------------------------------------------------
# HTMLヘッダー
#-------------------------------------------------
sub header {
print "Content-type: text/html\n\n";
print <<"EOM";
EOM
}
#-------------------------------------------------
# HTMLフッター
#-------------------------------------------------
sub footer {
print <<"EOM";
Entity::Convertor $ver
Copyright (c) 萌屋本舗/真心企画
EOM
}
#-------------------------------------------------
# entity変換(10進数)
#-------------------------------------------------
sub encode10 {
$mail =~ s/@/@/g;
$mail =~ s/A/A/g;
$mail =~ s/B/B/g;
$mail =~ s/C/C/g;
$mail =~ s/D/D/g;
$mail =~ s/E/E/g;
$mail =~ s/F/F/g;
$mail =~ s/G/G/g;
$mail =~ s/H/H/g;
$mail =~ s/I/I/g;
$mail =~ s/J/J/g;
$mail =~ s/K/K/g;
$mail =~ s/L/L/g;
$mail =~ s/M/M/g;
$mail =~ s/N/N/g;
$mail =~ s/O/O/g;
$mail =~ s/P/P/g;
$mail =~ s/Q/Q/g;
$mail =~ s/R/R/g;
$mail =~ s/S/S/g;
$mail =~ s/T/T/g;
$mail =~ s/U/U/g;
$mail =~ s/V/V/g;
$mail =~ s/W/W/g;
$mail =~ s/X/X/g;
$mail =~ s/Y/Y/g;
$mail =~ s/Z/Z/g;
$mail =~ s/a/a/g;
$mail =~ s/b/b/g;
$mail =~ s/c/c/g;
$mail =~ s/d/d/g;
$mail =~ s/e/e/g;
$mail =~ s/f/f/g;
$mail =~ s/g/g/g;
$mail =~ s/h/h/g;
$mail =~ s/i/i/g;
$mail =~ s/j/j/g;
$mail =~ s/k/k/g;
$mail =~ s/l/l/g;
$mail =~ s/m/m/g;
$mail =~ s/n/n/g;
$mail =~ s/o/o/g;
$mail =~ s/p/p/g;
$mail =~ s/q/q/g;
$mail =~ s/r/r/g;
$mail =~ s/s/s/g;
$mail =~ s/t/t/g;
$mail =~ s/u/u/g;
$mail =~ s/v/v/g;
$mail =~ s/w/w/g;
$mail =~ s/x/x/g;
$mail =~ s/y/y/g;
$mail =~ s/z/z/g;
# HTMLで表示できるように&を変換
$mail =~ s/&/&/g;
}
#-------------------------------------------------
# entity変換(16進数)
#-------------------------------------------------
sub encode16 {
$mail =~ s/@/@/g;
$mail =~ s/A/A/g;
$mail =~ s/B/42/g;
$mail =~ s/C/43/g;
$mail =~ s/D/44/g;
$mail =~ s/E/45/g;
$mail =~ s/F/46/g;
$mail =~ s/G/47/g;
$mail =~ s/H/48/g;
$mail =~ s/I/49/g;
$mail =~ s/J/4a/g;
$mail =~ s/K/4b/g;
$mail =~ s/L/4c/g;
$mail =~ s/M/4d/g;
$mail =~ s/N/4e/g;
$mail =~ s/O/4f/g;
$mail =~ s/P/50/g;
$mail =~ s/Q/51/g;
$mail =~ s/R/52/g;
$mail =~ s/S/53/g;
$mail =~ s/T/54/g;
$mail =~ s/U/55/g;
$mail =~ s/V/56/g;
$mail =~ s/W/57/g;
$mail =~ s/X/58/g;
$mail =~ s/Y/59/g;
$mail =~ s/Z/5a/g;
$mail =~ s/a/a/g;
$mail =~ s/b/b/g;
$mail =~ s/c/c/g;
$mail =~ s/d/d/g;
$mail =~ s/e/e/g;
$mail =~ s/f/f/g;
$mail =~ s/g/g/g;
$mail =~ s/h/h/g;
$mail =~ s/i/i/g;
$mail =~ s/j/j/g;
$mail =~ s/k/k/g;
$mail =~ s/l/l/g;
$mail =~ s/m/m/g;
$mail =~ s/n/n/g;
$mail =~ s/o/o/g;
$mail =~ s/p/p/g;
$mail =~ s/q/q/g;
$mail =~ s/r/r/g;
$mail =~ s/s/s/g;
$mail =~ s/t/t/g;
$mail =~ s/u/u/g;
$mail =~ s/v/v/g;
$mail =~ s/w/w/g;
$mail =~ s/x/x/g;
$mail =~ s/y/y/g;
$mail =~ s/z/z/g;
# xが二重に変換されているのを訂正
$mail =~ s/x//g;
# HTMLで表示できるように&を変換
$mail =~ s/&/&/g;
}
__END__