1
我如何獲得:HTMLPurifier:汽車BR
<p>first<br>p</p>
<p>second p</p>
來自:
<p>first
p</p>
<p>second p</p>
使用HTMLPurifier?
我如何獲得:HTMLPurifier:汽車BR
<p>first<br>p</p>
<p>second p</p>
來自:
<p>first
p</p>
<p>second p</p>
使用HTMLPurifier?
我不知道具體細節,但因爲這個問題沒有答案,看看這些指針幫助你:
如果你真的與HTML過濾解決這個設定,你也許能寫一個文本節點轉換,通過編寫一個延伸HTMLPurifier_AttrDef_Text
的類來執行nl2br
或str_replace
。僞代碼:
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->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淨化論壇線程(?什麼時候開始它,我也不會感到驚訝) - nl2br, auto <br /> insertion
。如果你找到解決方案,你可以在那裏發佈你的答案。