我如何得到:
<p>first<br>p</p>
<p>second p</p>
从:
<p>first
p</p>
<p>second p</p>
使用HTMLPurifier?
答案 0 :(得分:3)
我不确定具体细节,但由于这个问题没有答案,看看这些指针是否对你有帮助:
如果您真的开始使用HTML Purifier解决此问题,您可以通过编写扩展HTMLPurifier_AttrDef_Text
的类来编写执行nl2br
或str_replace
的textnode转换。伪代码:
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 />
节点。看看这对你有帮助吗?
HTML Purifier论坛上还有一个帖子(你开始了吗?我不会感到惊讶) - nl2br, auto <br /> insertion
。如果您找到解决方案,可以在那里发布答案。