1
<p>first<br>p</p>
<p>second p</p>
から:
HTMLPurifierを使用して<p>first
p</p>
<p>second p</p>
?
<p>first<br>p</p>
<p>second p</p>
から:
HTMLPurifierを使用して<p>first
p</p>
<p>second p</p>
?
私は詳細についてはよく分からないんだけど、この質問には一切答えを持っていないため、これらのポインタがあなたを助けている場合、以下を参照してください
あなたが本当に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 Purifierフォーラムにスレッドがあります(起動しましたか?私は驚くことはありません) - nl2br, auto <br /> insertion
。解決策を見つけたら、そこで回答を投稿することができます。