How i can get:
<p>first<br>p</p>
<p>second p</p>
from:
<p>first
p</p>
<p>second p</p>
using HTMLPurifier?
How i can get:
<p>first<br>p</p>
<p>second p</p>
from:
<p>first
p</p>
<p>second p</p>
using HTMLPurifier?
I'm not sure about the specifics, but since this question has no answers, see if these pointers help you:
If you're really set on solving this with HTML Purifier, you might be able to write a textnode transformation that does an nl2br
or str_replace
by writing a class that extends HTMLPurifier_AttrDef_Text
. Pseudocode:
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);
}
}
Then you'd inject your class into 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()
);
Caveats:
htmlspecialchars()
-ed (it'd be sane, really). Then you're out of luck with that approach. You'd have to find a way to inject a <br />
node, instead.HTMLPurifier_AttrDef_Text
instance.See if that helps you at all?
There's also a thread on the HTML Purifier forum (did you start it? I wouldn't be surprised) - nl2br, auto <br /> insertion
. If you find a solution, you could post your answer there.