Форумы / National / Russian / Тех. поддержка / HTML Purifier help

Советы и примеры (tips & trics)

Macik
#1 13.11.2013 23:56

Очередной раз завис в документации HTMLPurifier'а и поиске решения для моей проблемы. Поэтому решил собрать в этой теме некоторые решения.

Для начинающих:  приведенный код используется в настройках профиля HTMLPurifier'а, в файлах htmlpurifier.*.preset.php
Не рекомендуется менять профили для гостей (htmlpurifier.group_1.preset.php) и обычных пользователей (htmlpurifier.default.preset.php).

 

Оформил в виде таблицы

Проблема Решение Примечание
Не вставляется якорные ссылки 'Attr.EnableID' => true

Будьте внимательны, т.к. этот опция разрешает пользователям использовать атрибуты ID, которые могут пересекаться с ID других элементов на странице.

§ Документация 

В коде страницы не сохраняются атрибуты ID решение см. в предыдущем пункте

Будьте внимательны, т.к. этот опция разрешает пользователям использовать атрибуты ID, которые могут пересекаться с ID других элементов на странице.

§  Об ID и как избежать дублирования

Не могу указать `name` атрибут для якорной ссылки решение см. в предыдущем пункте

Атрибут `name` зависит от `ID` элемента. Надо разрешить использование `ID` атрибута. Подробнее смотри предыдущие 2 пункта.

Пользователи вставляют на страницы текст из Word'а с кучей ужасных стилей 'CSS.AllowedProperties' => 'z-index'

Ограничиваем список допустимых встроенных стилей.

§ Документация 

Не могу вставить ссылку с rel="nofollow" 'HTML.Nofollow' => true,

разрешаем значение nofollow

§ Документация 

Мне нужно указывать значение в атрибуте rel, а движок его режет 'Attr.AllowedRel' => 'gallery1,gallery2,gallery3,gallery4';

задаем список допустимых значений для атрибута rel

§ Документация 

Для фотогалереи надо указывать data атрибут «data-caption» для картинок, а он обрезается if ($def = $config->maybeGetRawHTMLDefinition()) {
$def->addAttribute('img', 'data-caption', 'Text');}

Разрешаем текстовый атрибут «data-caption» у тегов IMG

§ Документация 

Надо чтобы ссылки из простого текста превращались в кликабельные 'AutoFormat.Linkify' => true,

HTMLPurifier будет преобразовывать их автоматически

§ Документация 

Не вставляются внешние ресурсы, например видео с Ютуба 'HTML.SafeEmbed' => true,

Рекомендуется только как крайнее решение и только для администраторов (профиль `htmlpurifier.group_5.preset.php`)

§ Документация 

Надо запретить пользователю задавать определенные свойства через встроенные стили, например style="font-size:3em;" 'CSS.ForbiddenProperties' => array('font-size'),

Будьте внимательны т.к. остальные свойства в таком случае будут разрешены.

§ Документация 

Не открываются ссылки в отдельном окне —taget="_blank" (или '_self', '_parent', '_top')  'Attr.AllowedFrameTargets' => array('_blank', '_self', '_parent', '_top')

Разрешаем значения '_blank', '_self', '_parent', '_top' для атрибута target

§ Документация 

Не дает использовать встроенные через `data:` изображения. 
<img alt="" src="data:image/png;base64,iVBORw0KGgoAA…">  

'URI.AllowedSchemes' => array (
   'http' => true, 'https' => true, 'mailto' => true, 'ftp' => true,
   'data' => true
)

Добавляем вариант 'data' к списку разрешенных схем.

§ Документация 

Хочу указать на странице номера телефонов, ссылки вида <a href="tel:+7911…">.
 

Поддерживается HTML Purifier'ом начиная с версии 4.8.0.

Для более старых версий решается путем расширения класса `HTMLPurifier_URIScheme`
Подробнее ответил здесь (на английском)

Подобным образом можно добавить любую другую схему для URI.
§ Документация по `URI Filters`
Как включить поддержку HTML5 тегов? В HTMLpurifier пока нет встроенной поддержки HTML5. Решается путем расширения файла конфигурации используемой при инициализации HTMLpurifier'а.

Примеры подобных конфигураций можно посмотреть здесь:

https://github.com/kennberg/php-htmlpurfier-html5
https://github.com/xemlock/htmlpurifier-html5

[возможно будет внедрено в ближайших версиях]

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Отредактировано: Macik (23.11.2017 00:42, 6 лет назад)
Hantr
#2 02.06.2020 11:01
<marquee>Тут вставляем текст бегущей строки</marquee>

Подскажите пожалуста как включить поддержку данного тега на странице, покопался не нашел.