Преобразование HTML в текст: удаление тегов и форматирования
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы трансформировать HTML в текст при помощи JavaScript, используйте атрибут textContent
элемента DOM:
var html = "<p>Преобразуйте <em>этот</em> HTML в текст!</p>";
var temp = document.createElement("div");
temp.innerHTML = html;
var text = temp.textContent || temp.innerText || "";
Атрибут textContent
удаляет из строки все HTML-теги, итоговый результат будет такой: "Преобразуйте этот HTML в текст!". Если textContent
не доступен, примените innerText
.
HtmlAgilityPack: надежное решение для .NET
В .NET для преобразования HTML идеально подходит библиотека HtmlAgilityPack. С помощью функции ConvertToPlainText
из файла HtmlUtilities.cs
можно получить текст, сохраняя базовое форматирование, например <b>
или <i>
. Библиотека распостираняется под лицензией MIT и представляет собой универсальный инструмент для работы с HTML.
Регулярные выражения: удобно, но опасно
Вы можете использовать регулярные выражения (Regex) для удаления тегов и пробелов из HTML. Но стоит быть внимательными, так как в сложных ситуациях регулярные выражения могут работать некорректно.
// Вот так можно убрать нежелательные HTML-теги. Просто и эффективно.
var plainText = Regex.Replace(htmlContent, "<.*?>", String.Empty);
// А таким образом можно заменить " " на стандартные пробелы.
plainText = Regex.Replace(plainText, " ", " ");
Применение Regex вполне подходит для простых задач, но для масштабных проектов может быть непригодно.
Безопасность при работе с HTML, которым оперируют пользователи
При работе с HTML, введенным пользователем, безопаснось имеет первостепенное значение. HtmlAgilityPack предотвращает XSS-атаки и помогает поддерживать целостность данных при помощи методов, таких как WebUtility.HtmlDecode
для декодирования сущностей.
Не забывайте о тестировании: разнообразие HTML-контента
Важно проводить испытания функций преобразования с использованием разностороннего HTML-контента. Ясные комментарии в коде помогут другим разработчикам понять, как правильно пользоваться этими функциями.
Производительность: выбор между HtmlAgilityPack и Regex
Выбор между применением HtmlAgilityPack и Regex влияет на удобство из использования и скорость выполнения. Regex хорошо работает с простыми HTML и в условиях, где производительность играет ключевую роль. Для решения более сложных задач стоит предпочесть HtmlAgilityPack.
Визуализация
Теги в HTML:
HTML: <h1>Привет</h1><p>Мир!</p>
Простой текст после преобразования выглядит так:
Текст: Привет Мир!
Это схоже с возвращением к исходным данным без избыточности.
Продвинутые способы преобразования HTML в текст
Декодирование закодированных значений
HTML использует сущности, которые следует декодировать в исходные символы. В этом поможет WebUtility.HtmlDecode
:
// Преобразуем закодированные символы в исходные. Без тайн и шифров.
var decodedText = WebUtility.HtmlDecode(plainText);
Извлечение всех текстовых узлов
Для списков и таблиц может потребоваться дополнительный анализ. Вы должны проходить через и объединять текстовые узлы, чтобы правильно расставить приоритеты чтения. HtmlAgilityPack предлагает такие возможности.
Нормализация текста для улучшения читаемости
После преобразования текст может включать в себя излишнее количество пробелов и переходов на новую строку. Удаление лишних пробелов и нормализация текста повысит его читаемость. Это можно сравнить с уборкой после шумного вечера:
// "Бегите, пробелы!" – избавляемся от излишних пробелов.
plainText = Regex.Replace(plainText, @"\s+", " ").Trim();
Полезные материалы
- Node: textContent property – Web APIs | MDN — освежите свои знания о разнице между
innerText
иtextContent
. - Strip HTML tags from text using plain JavaScript – Stack Overflow — подробнее о том, как извлекать текст из HTML в JavaScript.
- jsoup: Java HTML parser, built for HTML editing, cleaning, scraping, and XSS safety — сильный инструмент для парсинга и очистки HTML в Java.
- Beautiful Soup: We called him Tortoise because he taught us. — инструмент на Python для анализа и извлечения данных из HTML и XML файлов.
- HTML Standard — изучите официальные стандарты структуры HTML и правил его парсинга.
- HTML Purifier – Filter your HTML the standards-compliant way! — очистите HTML и подготовьте его к преобразованию в простой текст при помощи этого инструмента.