C ++: удалить все форматирование HTML из строки? - PullRequest
2 голосов
/ 11 июня 2009

У меня есть строка, которая может включать теги br или span ... / span или другие символы / сущности HTML. Я хочу надежный способ избавиться от всего этого и получить оставшиеся символы UTF-8. Это должно быть кроссплатформенным, в идеале.

Примерно так было бы идеально:

http://snipplr.com/view/15261/python-decode-and-strip-html-entites-to-unicode/

но это также удаляет теги.

Ответы [ 3 ]

2 голосов
/ 11 июня 2009

Насколько строги ваши требования? Простой FSA с двумя государствами должен сделать. Начните в состоянии READCHAR. Всякий раз, когда вы читаете «<» в этом состоянии, переходите в состояние READTAG; в противном случае запишите символ в строку результата. Всякий раз, когда вы находитесь в состоянии READTAG и читаете «>», переходите обратно в состояние READCHAR.

Редактировать: Упс. Пропустил часть о сущностях. Для этого вам также потребуется состояние READENTITY. Когда вы переходите из него, вы также можете преобразовать код в соответствующий символ UTF-8.

1 голос
/ 11 июня 2009

Мне непонятно, что вы хотите.

Входной сигнал: Это строка

текста & во многих строках "

Если этот вывод:

1) This is a string <br> <br /> of text & on many lines "   (Replace &amp; with & and &quot; with ") 
2) This is a string of text & on many lines "
0 голосов
/ 11 июня 2009

Хотите просто удалить элементы или преобразовать HTML в простой текст?

Вариант 1:

Если вы просто хотите удалить все вхождения и можете использовать поиск и замену регулярных выражений.

Вариант 2:

Если то, что вы действительно пытаетесь сделать, - это взять страницу, которая имеет форматирование, и преобразовать ее в обычный текст, то самый простой и надежный способ, который я могу придумать, - это использовать браузер или какой-либо механизм браузера для фактического анализа HTML и извлеките текст из него.

IOW, это эквивалентно копированию веб-страницы из браузера в буфер обмена, а затем вставке ее в блокнот.

...