Извлечь текст из html. Очищает текст в формате HTML от тегов и возвращает неформатированный текст.
// Очищает текст в формате HTML от тегов и возвращает неформатированный текст.
//
// Параметры:
// ИсходныйТекст - Строка - текст в формате HTML.
//
// Возвращаемое значение:
// Строка - текст, очищенный от тегов, скриптов и заголовков.
//
Функция ИзвлечьТекстИзHTML(Знач ИсходныйТекст) Экспорт
Результат = "";
Текст = НРег(ИсходныйТекст);
// отрезаем все что не body
Позиция = СтрНайти(Текст, "<body");
Если Позиция > 0 Тогда
Текст = Сред(Текст, Позиция + 5);
ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 5);
Позиция = СтрНайти(Текст, ">");
Если Позиция > 0 Тогда
Текст = Сред(Текст, Позиция + 1);
ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1);
КонецЕсли;
КонецЕсли;
Позиция = СтрНайти(Текст, "</body>");
Если Позиция > 0 Тогда
Текст = Лев(Текст, Позиция - 1);
ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1);
КонецЕсли;
// вырезаем скрипты
Позиция = СтрНайти(Текст, "<script");
Пока Позиция > 0 Цикл
ПозицияЗакрывающегоТега = СтрНайти(Текст, "</script>");
Если ПозицияЗакрывающегоТега = 0 Тогда
// Не найден закрывающий тег - вырезаем оставшийся текст.
ПозицияЗакрывающегоТега = СтрДлина(Текст);
КонецЕсли;
Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 9);
ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 9);
Позиция = СтрНайти(Текст, "<script");
КонецЦикла;
// вырезаем стили
Позиция = СтрНайти(Текст, "<style");
Пока Позиция > 0 Цикл
ПозицияЗакрывающегоТега = СтрНайти(Текст, "</style>");
Если ПозицияЗакрывающегоТега = 0 Тогда
// Не найден закрывающий тег - вырезаем оставшийся текст.
ПозицияЗакрывающегоТега = СтрДлина(Текст);
КонецЕсли;
Текст = Лев(Текст, Позиция - 1) + Сред(Текст, ПозицияЗакрывающегоТега + 8);
ИсходныйТекст = Лев(ИсходныйТекст, Позиция - 1) + Сред(ИсходныйТекст, ПозицияЗакрывающегоТега + 8);
Позиция = СтрНайти(Текст, "<style");
КонецЦикла;
// вырезаем все теги
Позиция = СтрНайти(Текст, "<");
Пока Позиция > 0 Цикл
Результат = Результат + Лев(ИсходныйТекст, Позиция-1);
Текст = Сред(Текст, Позиция + 1);
ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1);
Позиция = СтрНайти(Текст, ">");
Если Позиция > 0 Тогда
Текст = Сред(Текст, Позиция + 1);
ИсходныйТекст = Сред(ИсходныйТекст, Позиция + 1);
КонецЕсли;
Позиция = СтрНайти(Текст, "<");
КонецЦикла;
Результат = Результат + ИсходныйТекст;
МассивСтрок = РазложитьСтрокуВМассивПодстрок(Результат, Символы.ПС, Истина, Истина);
Возврат СокрЛП(СтрСоединить(МассивСтрок, Символы.ПС));
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ИзвлечьТекстИзФайлаНаДиске (БСП)
ИзвлечьТекстOpenDocument (БСП)
ИзвлечьТекстИзТекстовогоФайла (БСП)
ИзвлечьТекстИзФайловНаСервере (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)