Замена специальных символов из источника HTML - PullRequest
1 голос
/ 10 марта 2010

Я новичок в кодировании HTML, и я знаю, что в HTML есть некоторые зарезервированные символы для его использования, и он также отображает некоторые символы по их кодам символов. Например -:

Œ  is   Œ
©  is   ©
®  is    ®

У меня есть источник HTML в std :: string. как я могу расшифровать их в их фактическую форму и заменить из std :: string? Есть ли какая-либо библиотека с доступным источником или это можно сделать с помощью макросов препроцессоров?

Ответы [ 3 ]

2 голосов
/ 10 марта 2010

Я бы порекомендовал использовать синтаксический анализатор HTML / XML, который может автоматически выполнить преобразование для вас. Правильный синтаксический анализ HTML вручную чрезвычайно сложен. Если вы настаиваете на том, чтобы сделать это самостоятельно, библиотека Boost String Algorithms предоставляет полезные функции замены.

1 голос
/ 10 марта 2010
Œ  is   Œ

Нет, это не так. Œ - это «ЧАСТИЧНАЯ ЛИНИЯ НАЗАД». Правильные числовые объекты для & OElig; Œ и Œ.

0 голосов
/ 10 марта 2010

Одним из методов для числовых объектов будет использование регулярного выражения, например &#([0-9]+);, захват числового значения и преобразование его в символ ASCII (возможно, с sprintf в C ++).

Для именованных объектов вам необходимо построить отображение. Возможно, вы могли бы сделать простую замену строки, чтобы преобразовать в числа, а затем использовать метод выше. У W3C есть таблица здесь: http://www.w3.org/TR/WD-html40-970708/sgml/entities.html

Но если вы пытаетесь прочитать или разобрать несколько строк HTML в строке, вам следует использовать анализатор HTML. Ищите много вопросов по SO.

...