Подтвердить что ты не робот

Как я могу декодировать объекты HTML?

Вот быстрый вопрос Perl:

Как я могу преобразовать специальные символы HTML, такие как ü или ', в обычный текст ASCII?

Я начал с чего-то вроде этого:

s/\&#(\d+);/chr($1)/eg;

и может написать его для всех символов HTML, но некоторые функции вроде этого, вероятно, уже существуют?

Обратите внимание, что мне не нужен полный HTML- > Текстовый конвертер. Я уже разбираю HTML с помощью HTML::Parser. Мне просто нужно преобразовать текст со специальными символами, которые я получаю.

4b9b3361

Ответ 1

Посмотрите HTML::Entities:

use HTML::Entities;

my $html = "Snoopy & Charlie Brown";

print decode_entities($html), "\n";

Вы можете угадать вывод.

Ответ 2

В приведенных выше ответах рассказывается, как декодировать объекты в строки Perl, но вы также спросили, как их изменить в ASCII.

Предполагая, что это действительно то, что вы хотите, и вам не нужны все символы юникода, вы можете посмотреть Text:: Unidecode module от CPAN до Zap все эти нечетные символы возвращаются в примерно аналогичный набор символов ASCII:

use Text::Unidecode qw(unidecode);
use HTML::Entities qw(decode_entities);

my $source = '北亰';  
print unidecode(decode_entities($source));

# That prints: Bei Jing 

Ответ 3

Обратите внимание, что есть также шестнадцатеричные символы. Они выглядят так: & # xe9; (& # XE9;).

Использовать декодирование_объектов HTML:: Entities для перевода сущностей в действительные символы. Для преобразования этого в ASCII требуется больше работы. Я использовал iconv (perl interface: Text:: Iconv) с вариантом транслитерации с некоторым успехом в прошлом. Но если вы имеете дело с ограниченным набором сущностей, или вам фактически не нужно, чтобы оно сводилось к эквивалентам ASCII, вам может быть лучше ограничить то, что производит decode_entities или предоставить ему пользовательские конверсионные карты. См. Документ HTML:: Entities.

Ответ 4

Существует несколько предопределенных объектов HTML - & " > и т.д. - что вы можете жестко закодировать.

Однако больший случай числовых объектов - { - будет намного сложнее, так как эти значения Unicode, и преобразование в ASCII будет варьироваться от трудно до невозможного.