sub PolishHTML {
my $str = shift;
if ($AllowXHTML) {
$str =~ s{(.*?)(&\w+;|\d+;|<\w[\w\d]*(?:\s+\w[\w\d]*(?:\s*=\s*(?:[^" '><\s]+|(?:'[^']*')+|(?:"[^"]*")+))?)*\s*/?>|\w[\w\d]*>|$)}
{HTML::Entities::encode($1, '^\r\n\t !\#\$%\"\'-;=?-~').$2}gem;
} else {
$str =~ s{(.*?)(&\w+;|\d+;|<\w[\w\d]*(?:\s+\w[\w\d]*(?:\s*=\s*(?:[^" '><\s]+|(?:'[^']*')+|(?:"[^"]*")+))?)*\s*>|\w[\w\d]*>|$)}
{HTML::Entities::encode($1, '^\r\n\t !\#\$%\"\'-;=?-~').$2}gem;
}
return $str;
}