◆CGI.pmを使いHTMLエスケープする場合は、
$htmlに目的のテキストデータを入れて、
#インスタンスを作らない場合
use CGI;
print CGI::escapeHTML($html);
#インスタンスを作る場合でいけるようです。
use CGI;
$q = new CGI;#クラスのインスタンスを生成
$html=$q->escapeHTML($html);#HTMLエスケープ
◆正規表現を使ってHTMLタグを取り除く処理をするには、
$text に目的のテキストデータを入れて、
$text =~ s/<.*?>//g; #HTMLタグを取り除く場合こんな感じです。これで安全ですが、もとに戻すことはできません。
◆URI::Escapeを使うやり方
use URI::Escape;
$unescaped = uri_unescape( $escaped ); #URLエンコード済み文字列のデコード
$escaped = uri_escape( $unescaped ); #URLエンコード済み文字列へのエンコード
◆エスケープは HTML::Entitiesモジュールを使うと便利だそうです。
◆自前のエスケープ関数を用意するとこんな感じになるようです。
(Perl/特殊文字のエスケープ - Take's Wikiより引用)
sub escape{my($strptr) = @_;
my($tmp);
$tmp = ${$strptr};
$tmp =~ s/\r\n|\n\r/\n/g;
$tmp =~ s/\r/\n/g;
$tmp =~ s/\&/&/g;
$tmp =~ s/\</</g;
$tmp =~ s/\>/>/g;
$tmp =~ s/\"/"/g;
$tmp =~ s/\'/'/g;
${$strptr} = $tmp;
}
初めてのPerl 第5版 | |
Randal L. Schwartz Tom Phoenix brian d foy 近藤 嘉雪 オライリージャパン 2009-10-26 売り上げランキング : 68148 Amazonで詳しく見る |
sponsered link
【プログラミング関係の最新記事】
sponsered link
タグ:HTMLエスケープ
独自に書いてしまうと抜けがあるかもしれない
のでモジュールを使った方がよいかと思います。
モジュール使ってみます。