我正在将HTMLPurifier与我的系统一起使用,出于某种原因,它会转换为以下内容:
<div class="item-horizontal mrb14" id="traditional">
<a href="/" title="Traditional">
<h3>Traditional</h3>
</a>
</div>
这样的事情:
<div class="item-horizontal mrb14" id="anchor-traditional">
<a href="/" title="Traditional"></a>
<h3><a href="/" title="Traditional">Traditional</a></h3>
<a href="/" title="Traditional"></a>
</div>
知道我应该在配置中添加什么? - 我目前的设置是:
require_once('HTMLPurifier.auto.php');
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
$config->set('Attr.AllowedFrameTargets', array('_blank'));
$config->set('HTML.Trusted', true);
$config->set('HTML.SafeObject', true);
$config->set('Output.FlashCompat', true);
$config->set('Filter.Custom', array( new HTMLPurifier_Filter_SafeIframe() ));
$config->set('Attr.EnableID', true);
$config->set('Attr.IDPrefix', 'anchor-');
$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'href*', 'URI');
$def->addAttribute('a', 'rel', 'CDATA');
$objPurifier = new HTMLPurifier($config);
return $objPurifier->purify($string);
答案 0 :(得分:0)
您正在将h3
的块元素嵌套在anchor (a)
标记中,这是一个内联元素。如果您使用的html5完全没问题,但使用xhtml 1.0作为您的doctype则不是。
以下是html5doctor的示例。
修改:谷歌上的一些谷歌搜索引发了我的帖子,强调了我的suspicion