Фильтруйте URL тегов img с помощью HTMLpurifier - PullRequest
1 голос
/ 02 октября 2019

Я использую htmlPurifier для фильтрации созданного пользователем HTML. Я хочу отфильтровать все URL-адреса изображений с помощью определенного набора правил, допуская более общие гиперссылки.

Как настроить фильтр URL-адресов, который применяется только к атрибутам img.src, но не к атрибутам a.href?

Полагаю, мне нужно настроить фильтр URI, как описано в http://htmlpurifier.org/docs/enduser-uri-filter.html. Но мне нужно как-то ограничить его атрибутами img.src.

Если я напишу фильтр какЕсть ли способ определить, работаю ли я в настоящее время с атрибутом img.src или нет?

class HTMLPurifier_URIFilter_NameOfFilter extends HTMLPurifier_URIFilter
{
    public $name = 'NameOfFilter';
    public function prepare($config) {}
    public function filter(&$uri, $config, $context) {}
}

1 Ответ

1 голос
/ 02 октября 2019

Я только что нашел решение: объект $ context содержит информацию о теге, который в данный момент обрабатывается. Таким образом, можно использовать:

class HTMLPurifier_URIFilter_MyImages extends HTMLPurifier_URIFilter {
    public $name = 'MyImages';
    public $post = true;
    public function prepare($config) {}
    public function filter(&$uri, $config, $context) {
        if ($context->get('CurrentToken')->name == 'img') {
            // do something with the image url here
        }
        return true;
    }
}
...