考虑以下脚本:
#!/usr/bin/perl
use strict;
use HTML::TreeBuilder;
sub test
{
my ($content) = @_;
my $tree = HTML::TreeBuilder->new;
$tree->implicit_tags(0);
$tree->no_expand_entities(1);
$tree->parse_content($content);
return $tree->as_HTML(q{<>&});
}
print test('test«');
print "\n";
print test('<a href="#" title="«"></a>')
它会打印:
<html>test«</html>
<html><a href="#" title="?"></a></html>
由于调用no_expand_entities(1)
HTML 实体«
不会在 HTML 元素内展开。但是由于某种原因,此模式不会更改属性的默认行为 - 相同的实体被展开并显示为垃圾。
您能否建议如何在 HTML 属性中强制禁用实体扩展?