0

我遇到了 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,hr,br,u,ul,ol,li,img[src|width|height|alt|class],span[class],strike,sup,sub');

到我的配置。

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

但是 HTMLPurifier 不允许这些类型的 url。

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

4

2 回答 2

0

嗯......是的,你可能有点不走运,除非你正则表达式出自定义值并在其位置留下一个唯一标识符,然后最后将它们放回原处。百分号特别糟糕,因为它们通常在 URL 中具有不同的含义。

于 2012-07-11T01:31:12.970 回答
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());
于 2020-08-22T17:49:54.073 回答