我可以如何获得:
<p>first<br>p</p>
<p>second p</p>发自:
<p>first
p</p>
<p>second p</p>使用HTMLPurifier?
发布于 2011-02-22 20:43:38
我不确定具体细节,但由于这个问题没有答案,看看这些指针是否对你有帮助:
如果您真的想用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 />节点。HTMLPurifier_AttrDef_Text实例。看看这对你有没有帮助?
在HTML Purifier论坛上也有一个帖子(是你发起的吗?我不会感到惊讶)- nl2br, auto
insertion。如果你找到了解决方案,你可以在那里发布你的答案。
https://stackoverflow.com/questions/4839489
复制相似问题