Очищает текст в формате 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);
КонецЕсли;
Позиция = СтрНайти(Текст, "<");
КонецЦикла;
Результат = Результат + ИсходныйТекст;
МассивСтрок = РазложитьСтрокуВМассивПодстрок(Результат, Символы.ПС, Истина, Истина);
Возврат СокрЛП(СтрСоединить(МассивСтрок, Символы.ПС));
КонецФункции