1

我在使 HTMLPurifier 不过滤标签属性时遇到了麻烦,但直到现在都没有成功,而且我快疯了。

    $config = HTMLPurifier_Config::createDefault();
    $config->set('Core.Encoding', 'UTF-8');
    $config->set('Core.CollectErrors', true);
    $config->set('HTML.TidyLevel', 'medium');
    $config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
    $config->set('URI.DisableExternalResources', false);

    $config->set('HTML.Allowed', 'table[border|width|style],tbody,tr,td,th,img[style|src|alt],span[style],p[style],ul,ol,li,strong,em,sup,sub');

    $PHTML = new HTMLPurifier($config);
    echo htmlspecialchars($PHTML->purify($html));

    // The input string:
    "Some <span style="text-decoration: underline;">cool text</span> <img src="http://someurl.com/images/logo.png" alt="" />.

    // The output string:
    "Some <span>cool text</span> <img src="%5C" alt="" />.

我想允许在 HTML.Allowed 选项中定义的指定元素的给定属性。

4

2 回答 2

1

有点晚的建议,但我遇到了与 HTMLPurifier 剥离样式属性类似的问题,即使它们是在HTML.Allowed设置中配置的。

我找到的解决方案要求您还配置CSS.AllowedProperties,它看起来有点像这样:

$config->set('CSS.AllowedProperties', 'text-align,text-decoration,width,height');

将此与 HTML.Allowed 结合使用:

$config->set('HTML.Allowed', 'img[src|alt|style],span[style]');

我希望其他人觉得这很有用,您可以在此处阅读有关 CSS.AllowedProperties 的更多信息

于 2015-04-30T05:25:45.940 回答
1

关闭魔术引号。(注意 %5C)

于 2012-05-09T17:15:38.010 回答