我正在使用htmlPurifier过滤用户生成的html。我想使用特定规则集过滤所有图像URL,同时允许使用更多常规超链接。
如何设置仅适用于img.src属性而不适用于a.href属性的URL过滤器?
我想,我需要按照http://htmlpurifier.org/docs/enduser-uri-filter.html中的描述设置URI过滤器。但是我需要以某种方式将其限制为img.src属性。
如果我编写这样的过滤器,是否有办法确定我当前是否正在使用img.src属性?
class HTMLPurifier_URIFilter_NameOfFilter extends HTMLPurifier_URIFilter
{
public $name = 'NameOfFilter';
public function prepare($config) {}
public function filter(&$uri, $config, $context) {}
}
我刚刚找到了解决方案:$ 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;
}
}