在src中允许自定义URL用于htmlpurifier中的图像

时间:2012-07-10 23:59:28

标签: htmlpurifier

我遇到了HTMLPurifier设置问题。

在我的情况下,我尝试净化的HTML包含img标记。为此,我补充道:

$ config-> set('HTML.Allowed','p [align | style],strong,a [href | title | mailto],em,table [class | width | cellpadding],td,tr, H3,H4,H5,小时,BR,U,UL,醇,李,IMG [SRC |宽度|高度| ALT |类],跨度[类],击,SUP,子');

到我的配置。

但问题是我的图像的src值开始和结束 %% abc %% %% xyz %%。 我稍后在代码中使用这些字符串来识别图像网址并做一些事情。

但HTMLPurifier不允许使用这些类型的网址。

我尝试添加自定义URI架构,但我无法让它工作。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

嗯......是的,你可能有点不走运,除非你把自定义值重新定义并在其位置留下一个唯一的标识符,然后将它们重新插入到最后。百分号特别糟糕,因为它们通常在URL中具有不同的含义。

答案 1 :(得分:0)

您应该能够如下覆盖属性定义/验证:

class ParameterURIDef extends \HTMLPurifier_AttrDef_URI
{
    public function validate($uri, $config, $context)
    {
        if(preg_match('/^\{[a-zA-Z0-9]+\}$/', $uri)) {
            return true;
        }

        return parent::validate($uri, $config, $context);
    }
}
 $config = HTMLPurifier_Config::createDefault();
 $def =   $config->getHTMLDefinition(true);
 $def->addAttribute('img', 'src', new ParameterURIDef());