#!/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";

メールアドレスをエンティティ・コード(数値文字参照)に変換します

変換するエンティティ・コードの種類を選択してください。
10進数
16進数
メールアドレスを入力してください。
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/&#x;42/g; $mail =~ s/C/&#x;43/g; $mail =~ s/D/&#x;44/g; $mail =~ s/E/&#x;45/g; $mail =~ s/F/&#x;46/g; $mail =~ s/G/&#x;47/g; $mail =~ s/H/&#x;48/g; $mail =~ s/I/&#x;49/g; $mail =~ s/J/&#x;4a/g; $mail =~ s/K/&#x;4b/g; $mail =~ s/L/&#x;4c/g; $mail =~ s/M/&#x;4d/g; $mail =~ s/N/&#x;4e/g; $mail =~ s/O/&#x;4f/g; $mail =~ s/P/&#x;50/g; $mail =~ s/Q/&#x;51/g; $mail =~ s/R/&#x;52/g; $mail =~ s/S/&#x;53/g; $mail =~ s/T/&#x;54/g; $mail =~ s/U/&#x;55/g; $mail =~ s/V/&#x;56/g; $mail =~ s/W/&#x;57/g; $mail =~ s/X/&#x;58/g; $mail =~ s/Y/&#x;59/g; $mail =~ s/Z/&#x;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/&#x/g; # HTMLで表示できるように&を変換 $mail =~ s/&/&/g; } __END__