- 论坛徽章:
- 3
|
回复 #20 ynchnluiti 的帖子
- {
- my $h = HTML::TreeBuilder->new_from_content( decode($encode, $html) );
- my $p = $h->look_down(_tag => q{p}); # 1) 找到最外层的p节点
- my $mainspan;
- for my $span( $h->look_down(_tag => q{span}) ){ #2
- if ( defined $span->attr('lang') ) {
- $span->attr(lang=>undef); #删除lang属性
- $mainspan = $span; #用$mainspan记录该span节点
- last;
- }
- }
- #print decode_entities($mainspan->as_HTML), "\n";
- for my $span( $h->look_down(_tag => q{span}) ){ # 3)把所有span节点的内容直接赋值给,span节点的父节点(即前面找到的$p
- $span->replace_with_content($span->content_refs_list);
- }
- my @content = $p->content_list;
- $p->detach_content(); # 4) detach掉$p的内容,因为要放在$mainspan里
- $mainspan->push_content(@content);
- $p->push_content($mainspan); # 5) 把内容放在$mainspan里
- print encode( $encode, $h->as_HTML('<>&',' ',{}) ), "\n";
- $h->delete;
- }
复制代码 |
|