我遇到了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架构,但我无法让它工作。 任何帮助表示赞赏。
答案 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());