Perl在字符实体引用处拆分字符串

时间:2015-10-06 14:43:04

标签: perl encoding character-entities html-treebuilder

Quick Perl问题希望是一个简单的答案。我正在尝试对包含非中断空格( )的字符串执行拆分。这是在使用html阅读HTML::TreeBuilder::XPath页面并检索$titleString = $tree->findvalue('/html/head/title')

所需的字符串之后
use HTML::TreeBuilder::XPath;
$tree = HTML::TreeBuilder::XPath->new;
$tree->parse_file( "filename" );
$titleString = $tree->findvalue('/html/head/title');
print "$titleString\n";

下面粘贴的是原始字符串,下面是打印的字符串:

Mr Dan Perkins (Active)
Mr?Dan Perkins?(Active)

我尝试将$titleString@parts = split('\?',$titleString);以及原始nbsp分开,但两者都没有效果。我的预感是,在某处可以添加一段简单的编码代码吗?

HTML code:

<html>
<head>
<title>Dan&nbsp;Perkins&nbsp;(Active)</title>
</head>
</html>

1 个答案:

答案 0 :(得分:2)

您不必知道文档中的文本是如何编码的。因此,当文档包含findvalue时,&nbsp;返回实际的不间断空格(U + 00A0)。因此,您可以使用

split(/\xA0/, $title_string)
   -or-
split(/\x{00A0}/, $title_string)
   -or-
split(/\N{U+00A0}/, $title_string)
   -or-
split(/\N{NBSP}/, $title_string)
   -or-
split(/\N{NO-BREAK SPACE}/, $title_string)