Perl разделить строку по ссылке на символьную сущность & nbsp;

Быстрый 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 код:

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

1 ответ

Решение

Вам не нужно знать, как кодируется текст в документе. В качестве таких, findvalue возвращает фактический неразрывный пробел (U+00A0), когда документ содержит &nbsp;, Таким образом, вы будете использовать

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)
Другие вопросы по тегам