#-----------------------------------------------------------
# フォームデコード
#-----------------------------------------------------------
sub parse_form {
my $cgi = shift;
my %in;
foreach ( $cgi->param() ) {
my $val = $cgi->param($_);
if ($_ ne 'upfile') {
# 無効化
$val =~ s/&(?!\#
# 部分マッチの後方参照は必要ないため、
# (a|b)ではなく(?:a|b)を使用
(?:
# 十進
0*(?:
9|1[03]|3[2-9]|[4-9][0-9]
|1(?:[016-9]\d|2[0-6])|[2-9]\d\d
|\d\d\d\d(?:\d\d)?
|[1-47-9]\d\d\d\d
|5(?:[0-489]\d\d\d
|5(?:[01]\d\d
|2(?:[0-8]\d
|9[0-5]))
|7(?:3(?:4[4-9]
|[5-9]\d)
|[4-9]\d\d))
|6(?:[0-46-9]\d\d\d
|5(?:[0-46-9]\d\d
|5(?:[0-24-9]\d
|3[0-36-9])))
|1(?:0\d\d\d\d\d
|1(?:0\d\d\d\d
|1(?:[0-3]\d\d\d
|4(?:0\d\d
|1(?:0\d
|1[01])))))
)
|
# 十六進
x0*(?:
[9ADad]|[2-6A-Fa-f][\dA-Fa-f]|7[\dA-Ea-e]
|[\dA-Fa-f]{3}(?:[\dA-Fa-f]{2})?
|(?:[\dA-Ca-c][\dA-Fa-f]
|[Dd][0-7]
|[Ee][\dA-Fa-f]
|[Ff][\dA-Ea-e])[\dA-Fa-f][\dA-Fa-f]
|[Ff]{2}(?:[\dA-Ea-e][\dA-Fa-f]
|[Ff][\dA-Da-d])
|10[\dA-Fa-f]{4}
)
)
;)/&/gx;
$val =~ s/</g;
$val =~ s/>/>/g;
$val =~ s/"/"/g;
$val =~ s/'/'/g;
# 改行変換
$val =~ s/\r\n/
/g;
$val =~ s/\n/
/g;
$val =~ s/\r/
/g;
}
$in{$_} = $val;
}
return %in;
}