HTML::EscapeEvilで掲示板的なHTMLプリプロセッサを作るときの注意
たとえば、掲示板で、textareaに入力してもらい、表示するときにあるHTMLタグは生かし、あるHTMLタグは死んでもらうときに利用すると便利なのが、HTML::EscapeEvilモジュールです。
しかし、HTML::EscapeEvilで、HTMLタグの全く無い文字列を入れると、空っぽになって返ってくる。しょうがないので、
にくるんでやってみるとうまくいったよ。でも、あとで除去しないとダメ。sub _preprocess_text { $_ = shift; my $escapeevil = HTML::EscapeEvil->new; $escapeevil->add_allow_tags( qw( a pre blockquote strong em ) ); $escapeevil->parse("<body>$_</body>"); $_ = $escapeevil->filtered_html; $escapeevil->clear; s|<body>(.+?)</body>|$1|so; s|<a(.*?)>|<a$1 target="_blank">|sgo; s|<pre(.*?)>|<pre$1 class="prettyprint">|sgo; s|\n|<br />|sgo; return $_; }