Regulær expression til linieskift
Jeg har noget tekst i en database, som jeg skal have lavet linieskift i, og jeg startede med at benytte nl2br.Nu er det imidlertid sådan, at jeg også skal kunne bruge html-udtryk, og så bliver nl2br lidt dum efter fx <h1>.
I stedet har jeg prøvet lidt med fx:
function formater_tekstfelt($tekst) {
// erstatter PHPs indbyggede funktion nl2br
//$search = "'([^<.*? >]\r\n)'";
$search = "'([^>\n]{1}[\r]{1})'";
$replace = "\\1<br /><br />\n";
return preg_replace($search, $replace, $tekst);
}
Den virker også fint på:
http://www.vih.dk/nyheder/?id=246
Men har problemer på:
http://www.vih.dk/nyheder/?id=219
Reglen skal være, at der ikke skal være linieskift efter en linie, der slutter med html-markup, fx <li>, <p> eller <h1>.
