Hallo,
ich bin gerade dabei für meine Seite einen Editor zu entwerfen, in dem Informationen und komplette Kapitel eingetragen werden können, wichtig für mich:
[h1-h3]
[b/i/u]
[ul/li]
so, die Textumwandlung mittels "pregreplace" ist ja gar kein Thema, dass Zeilenumbrüche korrekt ausgegeben werden habe ich, recht weit am Anfang nl2br in meiner Funktion. Aber.... sobald ich mit Elementen arbeite die selbst einen Zeilenumbruch erzeugen, habe ich überall 2 Zeilenumbrüche z.B. <h1>Überschrift</h1> oder <li></li>. Gibt es eine Möglichkeit eine Ausnahmeregel für nl2br oder den jeweiligen "pregreplace"-Eintrag in der Funktion zu definieren?
meine Funktion sieht folgendermaßen aus:
{
$inhalt = htmlspecialchars($inhalt);
$inhalt = nl2br($inhalt);
$inhalt = stripslashes($inhalt);
$inhalt = preg_replace('=\[b\](.*)\[/b\]=Uis',
'<span style="font-weight:bold;">\1</span>',
$inhalt);
$inhalt = preg_replace('=\[i\](.*)\[/i\]=Uis',
'<span style="font-style:italic;">\1</span>',
$inhalt);
$inhalt = preg_replace('=\[u\](.*)\[/u\]=Uis',
'<span style="text-decoration:underline;">\1</span>',
$inhalt);
$inhalt = preg_replace('=\[marker\](.*)\[/marker\]=Uis',
'<span style="background-color: yellow;
font-style:italic;">\1</span>',
$inhalt);
$inhalt = preg_replace('=\[list\](.*)\[/list\]=Uis',
'<ul>\1</ul>',
$inhalt);
$inhalt = preg_replace('=\[\*\](.*)\[/\*\]=Uis',
'<li>\1</li>',
$inhalt);
$inhalt = preg_replace('=\[color\=rot](.*)\[/color\]=Uis',
'<font color="red">\1</font>',
$inhalt);
$inhalt = preg_replace('=\[color\=gelb](.*)\[/color\]=Uis',
'<font color="yellow">\1</font>',
$inhalt);
$inhalt = preg_replace('=\[color\=blau](.*)\[/color\]=Uis',
'<font color="blue">\1</font>',
$inhalt);
$inhalt = preg_replace('=\[color\=grün](.*)\[/color\]=Uis',
'<font color="green">\1</font>',
$inhalt);
$inhalt = preg_replace('=\[color\=hellgrün](.*)\[/color\]=Uis',
'<font color="lime">\1</font>',
$inhalt);
$inhalt = preg_replace('=\[color\=braun](.*)\[/color\]=Uis',
'<font color="brown">\1</font>',
$inhalt);
$inhalt = preg_replace('=\[h1](.*)\[/h1\]=Uis',
'<h1>\1</h1>',
$inhalt);
$inhalt = preg_replace('=\[h2](.*)\[/h2\]=Uis',
'<h2>\1</h2>',
$inhalt);
$inhalt = preg_replace('=\[h3](.*)\[/h3\]=Uis',
'<h3>\1</h3>',
$inhalt);
echo $inhalt;
exit;
}
Zur Info, da es im Moment, noch in Testphase ist, ist dies noch keine wirkliche Funktion, sondern wird direkt abgearbeitet. Funktioniert auch bis hierhin, nur oben genanntes Problem macht mir zu schaffen.
Vielen Dank im Vorraus für alle sinnigen Hinweise und Tipps.