Это замечательная система фильтрации и типографирования, Разработанная в Тематических Медиа для собственных проектов (в частности Хабрахабр), которая позволяет решить вопрос с фильтраций контента.
Она поможет образумить криворукого менеджера или злого скрипт-кидди, распихивающего везде XSS.
Таким образом настраивается Jevix-интерпретирование данных:
// Конфигурация - задаем параметры по отдельности
// 1. Задает список разрешенных тегов
$qevix->cfgSetTagsAllowed(['b', 'i', 'u', 'a', 'img', 'ul', 'li', 'ol', 'br', 'code', 'pre', 'div', 'cut']);
// 2. Указывает, какие теги считать короткими (<br>, <img>)
$qevix->cfgSetTagShort(['br','img','cut']);
// 3. Указывает преформатированные теги, в которых нужно всё заменять на HTML сущности
$qevix->cfgSetTagPreformatted(['code']);
// 4. Указывает не короткие теги, которые могут быть пустыми и их не нужно из-за этого удалять
$qevix->cfgSetTagIsEmpty(['div']);
// 5. Указывает теги, внутри которых не нужна авто-расстановка тегов перевода на новую строку
$qevix->cfgSetTagNoAutoBr(['ul', 'ol']);
// 6. Указывает теги, которые необходимо вырезать вместе с содержимым
$qevix->cfgSetTagCutWithContent(['script', 'object', 'iframe', 'style']);
// 7. Указывает теги, после которых не нужно добавлять дополнительный перевод строки. Например, блочные теги
$qevix->cfgSetTagBlockType(['ol','ul','code']);
// 8. Добавляет разрешенные параметры для тегов. Значение по умолчанию - шаблон #text. Разрешенные шаблоны #text, #int, #link, #regexp(...) (Например: "#regexp(\d+(%|px))")
$qevix->cfgSetTagAttrAllowed('a', ['title', 'href' => '#link', 'rel' => '#text', 'target' => ['_blank'], 'download' => '#bool']);
$qevix->cfgSetTagAttrAllowed('img', ['src' => '#text', 'alt' => '#text', 'title', 'align' => ['right', 'left', 'center'], 'width' => '#int', 'height' => '#int']);
// 9. Добавляет обязательные параметры для тега
$qevix->cfgSetTagAttrRequired('img', 'src');
$qevix->cfgSetTagAttrRequired('a', 'href');
// 10. Указывает, какие теги являются контейнерами для других тегов
$qevix->cfgSetTagChildren('ul', 'li', true, true);
$qevix->cfgSetTagChildren('ol', 'li', true, true);
// 11. Указывает, какие теги не должны быть дочерними к другим тегам
$qevix->cfgSetTagGlobal('cut');
// 12. Устанавливаем атрибуты тегов, которые будут добавляться автоматически
$qevix->cfgSetTagAttrDefault('a', 'rel', 'nofollow', true);
$qevix->cfgSetTagAttrDefault('img', 'alt', '');
// 13. Указывает теги, в которых нужно отключить типографирование текста
$qevix->cfgSetTagNoTypography(['code', 'pre']);
// 14. Устанавливает список разрешенных протоколов для ссылок (https, http, ftp)
$qevix->cfgSetLinkProtocolAllow(['http','https']);
// 15. Включает или выключает режим XHTML
$qevix->cfgSetXHTMLMode(false);
// 16. Включает или выключает режим автозамены символов переводов строк на тег br
$qevix->cfgSetAutoBrMode(true);
// 17. Включает или выключает режим автоматического определения ссылок
$qevix->cfgSetAutoLinkMode(true);
// 18. Задает символ/символы перевода строки. По умолчанию "\n". Разрешено "\n", "\r\n" или null (задает автоматически для текущей ОС)
$qevix->cfgSetEOL("\n");
// 19. Устанавливает на тег callback-функцию
$qevix->cfgSetTagBuildCallback('code', 'tag_code_build');
// 20. Устанавливает на строку предворенную спецсимволом (@|#|$) callback-функцию
$qevix->cfgSetSpecialCharCallback('#', 'tag_sharp_build');
$qevix->cfgSetSpecialCharCallback('@', 'tag_at_build');
// 21. Устанавливает на тег callback-функцию, которая сохраняет URL изображений для meta-описания
$qevix->cfgSetTagEventCallback('img', 'tag_img_event');Информация взята отсюда.
Комментарии ()