Forum
Tipps
News
Menu-Icon

[PHP/BBC] nl2br nur breding anwenden

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:

Zitat
    {
      $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.

Antworten zu [PHP/BBC] nl2br nur breding anwenden:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Also ich finde es durchaus korrekt, wenn z.B. die Kombination <li></li><br /> 2 Zeilenumbrüche (und damit 1 Leerzeile) erzeugt. Alles weitere könntest du auch mit CSS lösen.

Ein aus meiner Sicht sinnvoller Hinweis vielleicht noch: Du erfindest glaub ich grad das Rad neu. TinyMCE oder vergleichbare Editoren haben Jahre der Entwicklung auf dem Buckel und stellen sehr gut konfigurierbare Werkzeuge für deinen Einsatzzweck dar.

greez 8)
JoSsiF


« ipconfig /flushdns geht nicht!?Win XP: Hy bin noch Anfänger und hätte eine frage zu PHP »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
ID3 Informationen
Die ID3 Informationen sind Textinformationen, die in einer mp3 Datei mitgespeichert werden können. ID3-Tags ermöglichen es, Metadaten wie Titel, Künstler, ...

CSS
CSS ist die Abkürzung für Cascading Style Sheets, eine Beschreibungssprache im Internets, die für die visuelle Gestaltung von Webseiten verantwortlich ist....