1С 8.3 Замена HTML кодов на символы - Программист 1С Минск. Автоматизация бизнеса.

Популярные страницы:
Перейти к контенту

1С 8.3 Замена HTML кодов на символы

Перейти в раздел примеры кода 1С 8.3:
Функции применяются для исключения спец.символов из HTML кода.
Первый пример - более универсальный.
Второй пример - для замены заранее известных символов.
Третий пример - более замороченный. Используется VBScript.
Замена всех HTML кодов в 1С 8.3 (универсальная):
&НаКлиенте
Функция ЗаменаHTMLКодов(Знач ВэбСтрока)

   МногострочныйСписок = СтрЗаменить(ВэбСтрока, "&#", Символы.ПС);
   МногострочныйСписок = СтрЗаменить(МногострочныйСписок, ";", Символы.ПС);

   Для НомерСтроки = 1 По СтрЧислоСтрок(МногострочныйСписок) Цикл

       ОднострочнаяСтрока = СтрПолучитьСтроку(МногострочныйСписок, НомерСтроки);

       Если Найти(ОднострочнаяСтрока," ") > 0 Или ПустаяСтрока(ОднострочнаяСтрока) Тогда
           Продолжить;
       КонецЕсли;

       Попытка
           КодСимвола = Число(ОднострочнаяСтрока);
       Исключение
           Продолжить;
       КонецПопытки;

       ПодстрокаЗамены = Символ(КодСимвола);
       ЗаменяемаяСтрока = "&#" + ОднострочнаяСтрока + ";";
       ВэбСтрока = СтрЗаменить(ВэбСтрока, ЗаменяемаяСтрока, ПодстрокаЗамены);

   КонецЦикла;

   Возврат ВэбСтрока;

КонецФункции
Замена определённых (заранее известных, например: символы разметки) HTML кодов в 1С 8.3:
&НаКлиенте
Функция ЗаменаHTMLКодов(Знач ВэбСтрока)

   Коды = Новый Соответствие();
   Коды.Вставить("[", "[");
   Коды.Вставить("]", "]");
   Коды.Вставить(" ", " ");

   Для Каждого ЭлементКод Из Коды Цикл
       ВэбСтрока = СтрЗаменить(ВэбСтрока, ЭлементКод.Ключ, ЭлементКод.Значение);
   КонецЦикла;

   Возврат ВэбСтрока;

КонецФункции
Замена HTML кодов с помощью VBScript *регулярных выражений в 1С 8.3:
Функция ЗаменитьПодстроки(Шаблон, СтрЗамена, Знач Текст)

   РегВыр = Новый COMОбъект("VBScript.RegExp");
   РегВыр.Global = Истина;         //Поиск всех вхождений шаблона
   РегВыр.IgnoreCase = Истина;     //Игнорировать регистр символов
   РегВыр.MultiLine = Ложь;     //Многострочный режим
   РегВыр.Pattern = Шаблон;

   Текст = РегВыр.Replace(Текст, СтрЗамена);

   // Возврат замененных подстрок по регулярному выражению
   Возврат Текст;

КонецФункции

Функция НайтиПодстроки(Шаблон, Текст)

   РегВыр = Новый COMОбъект("VBScript.RegExp");
   РегВыр.Global = Истина;        //Поиск всех вхождений шаблона
   РегВыр.IgnoreCase = Истина; //Игнорировать регистр символов
   РегВыр.MultiLine = Ложь;    //Многострочный режим
   РегВыр.Pattern = Шаблон;

   СоответствиеСтроки = РегВыр.Execute(Текст);

   МассивЗначений = Новый Массив();
   Для Каждого СтрСоотв Из СоответствиеСтроки Цикл

       СубМассивЗначений = Новый Массив();
       СубМассивЗначений.Добавить(СтрСоотв.Value);
       Если ТипЗнч(СтрСоотв.SubMatches) = Тип("COMОбъект") Тогда
           Для Каждого StrSubMatches Из СтрСоотв.SubMatches Цикл
               СубМассивЗначений.Добавить(StrSubMatches);
           КонецЦикла;
       КонецЕсли;

       МассивЗначений.Добавить(СубМассивЗначений);

   КонецЦикла;

   // Возврат многомерного массива результатов поиска
   // по регулярному выражению по регулярному выражению
   Возврат МассивЗначений;

КонецФункции
Поиск кода
0
Комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 28.03.2022
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому