我怎么能得到:
<p>first<br>p</p>
<p>second p</p>
从:
<p>first
p</p>
<p>second p</p>
使用 HTMLPurifier?
我怎么能得到:
<p>first<br>p</p>
<p>second p</p>
从:
<p>first
p</p>
<p>second p</p>
使用 HTMLPurifier?
我不确定具体细节,但由于这个问题没有答案,看看这些指针是否对你有帮助:
如果您真的打算使用 HTML Purifier 来解决这个问题,您也许可以编写一个 textnode 转换来执行nl2br
或str_replace
通过编写一个扩展的类HTMLPurifier_AttrDef_Text
。伪代码:
class HTMLPurifier_AttrDef_Text_Linebreaks extends HTMLPurifier_AttrDef_Text
{
public function validate($string, $config, $context) {
$string = parent::validate($string, $config, $context);
return str_replace("\n", "<br />", $string);
}
}
然后你将你的类注入 HTML Purifier:
$purifier->set('HTML.DefinitionID', 'aNameForYourDefinition');
$purifier->set('HTML.DefinitionRev', 1);
//$purifier->set('Cache.DefinitionImpl', null);
$htmlDef = $purifier->config->getHTMLDefinition();
$htmlDef->manager->attrTypes->set(
'Text',
new HTMLPurifier_AttrDef_Text_Linebreaks()
);
注意事项:
htmlspecialchars()
-ed (它会是理智的,真的)。那么你对这种方法不走运。相反,您必须找到一种注入<br />
节点的方法。HTMLPurifier_AttrDef_Text
实例。看看这对你有帮助吗?
HTML Purifier 论坛上也有一个帖子(你开始了吗?我不会感到惊讶)- nl2br, auto <br /> insertion
。如果您找到解决方案,您可以在此处发布您的答案。