Экранирование html

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

Область видимости

Evas-Validate предполагает установку правил с разной областью видимости:

  1. Суперглобально - установка правил для всего проекта с помощью констант;
  2. Глобально - установка правил для всех классов;
  3. Локально - установка правил для класса.

Подробнее ознакомиться с локальной и глобальной установкой вы сможете ниже, а с константами здесь.

Локальная конфигурация

Свойства

ИмяТипОписание
$allowableHtmlTagsMaparrayмаппинг правил поддерживания html-тегов для конкретных полей
$htmlentitiesMaparrayмаппинг правил замены на html-сущности для конкретных полей

Локальная установка

allowableHtmlTags

Локально устанавливает поддерживаемые html-теги для strip_tags

АргументТипОписание
1string|nullподдерживаемые html-теги или null для поддержки всех
2array|nullполя к которым применить эти настройки
$local->allowableHtmlTags('<p>', ['test', 'test1']);

htmlentities

Локально устанавливает/сбрасывает замену html-тегов на html-сущности

АргументТипОписаниеПо умолчанию
1boolиспользовать заменуfalse
2array|nullполя к которым применить эти настройки
$local->htmlentities(['test', 'test1']);

Глобальная конфигурация

Свойства

ИмяТипОписание
$allowableHtmlTagsGlobalMaparrayглобальный маппинг правил поддерживания html-тегов для конкретных полей
$htmlentitiesGlobalMaparrayглобальный маппинг правил замены на html-сущности для конкретных полей

Глобальная установка

allowableHtmlTagsGlobal

Глобально устанавливает поддерживаемые html-теги для strip_tags

АргументТипОписание
1string|nullподдерживаемые html-теги или null для поддержки всех
2array|nullполя к которым применить эти настройки
$global->allowableHtmlTagsGlobal(null, ['test']);

htmlentitiesGlobal

Глобально устанавливает замену html-тегов на html-сущности

АргументТипОписаниеПо умолчанию
1boolиспользовать заменуfalse
2array|nullполя к которым применить эти настройки
$global->htmlentitiesGlobal(['test']);

Получение настроек

getAllowableHtmlTags

Получает общее правило поддерживаемых html-тегов для strip_tags

$html->getAllowableHtmlTags();

getHtmlentities

Получает общее правило экранирования htmlentities

$html->getHtmlentities();

getAllowableHtmlTagsMap

Получает маппинг правил поддерживаемых тегов strip_tags

$html->getAllowableHtmlTagsMap();

getHtmlentitiesMap

Получает маппинг правил htmlentities

$html->getHtmlentitiesMap();

Применение настроек

escapeHtml

Экранирует html-теги в значении

АргументТипОписание
1mixedзначение
2string|nullимя поля
$html->escapeHtml();

escapeHtmlInValues

Экранирует html-теги в массиве или объекте

АргументТипОписание
1array|objectзначение
$html->escapeHtmlInValues();

Наследование

Evas-Validate позволяет наследовать правила экранирования html, подробнее с методами для наследования вы можете ознакомиться ниже.

mergeMaps

Склеивает маппинги внешнего и вложенного объектов

АргументТипОписание
1arrayмаппинг вложенного объекта
2arrayмаппинг внешнего объекта
$html->mergeMaps(['email' => 'test@test.com', 'password' => 'test'], ['name' => 'test', 'date' => '2021-07-29', 'id' = '22']);

inheritHtmlEscaping

Наследует параметры экранирования html во вложенный объект

АргументТипОписание
1objectвложенный объект
$html->inheritHtmlEscaping(new Field);

Пример:

// создаем валидатор поля
$fieldset = new Fieldset([
    'filter' => new Fieldset([
        'date' => new DateField,
        'name' => new NameField,
    ]),
]);

// устанавливаем правило поддерживаемых html-тегов
$fieldset->allowableHtmlTags('<p>', ['name']);

// устанавливаем правило замены html-тегов на html-сущности
$fieldset->htmlentities(['name']);

$html = new NameField;

// наследуем параметры экранирования html
$html->inheritHtmlEscaping($fieldset, 'name');