使用perl删除html的特殊字符

时间:2013-05-24 18:31:21

标签: perl

我正在尝试使用perl删除HTML特殊符号。我尝试使用这个HTML :: Strip,编码qw(_utf8_on);

use Encode qw( _utf8_on );
_utf8_on($string);
print "$string\n\n";

Output: Clearance Subject Male control 5 1-a 21 31â ±â2 74

use HTML::Strip;
my $hs = HTML::Strip->new();
my $clean_text = $hs->parse($string);
print "$clean_text\n";

Ouput: Clearance Subject Male control 5 1-a 21 31â ñâ2 74

Expected output: Clearance Subject Male control 5 1-a 21 31±2 74

有人可以帮助我吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

首先,永远不要使用_utf8_on。如果要解码字符串,请使用Encode的decode_utf8或内置utf8::encode。 (后者就地工作。)


现在回答。

(刚刚得到一分钟,所以我无法验证我对答案的猜测。)

您需要将原始HTML(如文档所述)传递给parse,而不是它的某些解码版本。在utf8::downgrade($string);之前添加$hs->parse($string);将检测到您的一些错误,它将解决HTML :: Strip中很少发生的错误。

如果您这样做,原始字符串是包含

的HTML文档
...Clearance Subject Male control 5 1-a 21 31±2 74...

你应该得到以下输出:

...Clearance Subject Male control 5 1-a 21 31±2 74...