Вопрос

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

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

Я начал с чего -то подобного:

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

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

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

Это было полезно?

Решение

Взгляни на HTML :: Entities:

use HTML::Entities;

my $html = "Snoopy & Charlie Brown";

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

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

Другие советы

Приведенные выше ответы говорят вам, как декодировать сущности в строки Perl, но вы также спросили, как их изменить Асии.

Предполагая, что это действительно то, что вы хотите, и вам не нужны все персонажи Unicode, которые вы можете посмотреть на Текст :: unidecode Модуль от 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 

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

Используйте HTML :: Entities 'Decode_Enterities, чтобы перевести сущности в реальные символы. Чтобы преобразовать это в ASCII, требуется больше работы. Я использовал ICONV (интерфейс Perl: Text :: ICONV) с опцией Transliterate с некоторым успехом в прошлом. Но если вы имеете дело с ограниченным набором сущностей, или вам на самом деле не нужно, чтобы это было уменьшено до эквивалентов ASCII, вам может быть лучше ограничить то, что производит decode_entities или предоставив его на пользовательских картах конверсии. Смотрите html :: ountities doc.

Есть несколько предопределенных HTML -сущностей - & " > И так далее - что вы можете жесткий код.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top