如何允许borderRadius使用htmlpurifier?
我发现了这个,但它似乎不适用于当前版本的htmlpurifier,也许它们改变了你添加自己的css的方式?
http://htmlpurifier.org/phorum/read.php?2,6154,6154
$config = HTMLPurifier_Config::createDefault();
// add some custom CSS3 properties
$css_definition = $config->getDefinition('CSS');
$border_radius =
$info['border-top-left-radius'] =
$info['border-top-right-radius'] =
$info['border-bottom-left-radius'] =
$info['border-bottom-right-radius'] =
new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_CSS_Length('0'),
new HTMLPurifier_AttrDef_CSS_Percentage(true)
));
$info['border-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius);
// wrap all new attr-defs with decorator that handles !important
$allow_important = $config->get('CSS.AllowImportant');
foreach ($info as $k => $v) {
$css_definition->info[$k] = new HTMLPurifier_AttrDef_CSS_ImportantDecorator($v, $allow_important);
}
$html_purifier = new HTMLPurifier($config);
答案 0 :(得分:2)
我在原始仓库中分叉并在净化功能中添加了边框半径功能,代码可以在这里找到
https://github.com/msvensson82/htmlpurifier
我基本上只是将它添加到CSSDefinition.php文件中,如果你想修改你的而不是获得我的回购。
// border-radius
$border_radius =
$this->info['border-top-left-radius'] =
$this->info['border-top-right-radius'] =
$this->info['border-bottom-left-radius'] =
$this->info['border-bottom-right-radius'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
new HTMLPurifier_AttrDef_CSS_Length('0'),
new HTMLPurifier_AttrDef_CSS_Percentage(true)
));
$this->info['border-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius);
答案 1 :(得分:1)
从 2016 开始,这可以通过打开 CSS.Proprietary
选项来实现:
use HTMLPurifier;
use HTMLPurifier_Config;
$input = '<div style="border: 2px solid; border-radius: 10px;">Hello world!</div>';
$config = HTMLPurifier_Config::createDefault();
// Enable "proprietary" css properties to allow use of `border-radius`
$config->set('CSS.Proprietary', true);
$purifier = new HTMLPurifier($config);
echo $hp_purifier->purify($input);
// => <div style="border:2px solid;border-radius:10px;">Hello world!</div>
这允许您使用 border-radius
以及单独的属性 border-top-left-radius
、border-top-right-radius
、border-bottom-right-radius
和 border-bottom-left-radius
打开专有 css 属性也启用了 a small handful of other properties,但除了 filter
属性(目前显然只支持不透明度过滤器),我想我从未见过任何之前使用过。