yannick-server
Goto Top

Editor Listen in ul li umwandeln

Guten Abend,
ich brauche für ein Forum eine Möglichkeit den Benutzer seine Eingaben formatieren zu lassen, wie BBCode.
Allerdings möchte ich, dass z.B. Listen so aufgelistet werden:
*Punkt1
*Punkt2
*Punkt3
... ihr wisst schon was ich meine. Die li Tags bekomme ich mit Regex umgewandelt, aber wie setze ich jetzt einen Block ul um die li Tags?
Hier der Ausschnitt meiner Datei:
<?php
$str = preg_replace("#\*(.*)\\r\\n#U", "<li>$1</li>", $str);  
?>

Vielen Dank & mfg
Yannick

Content-ID: 164986

Url: https://administrator.de/contentid/164986

Ausgedruckt am: 24.11.2024 um 15:11 Uhr

Arano
Arano 20.04.2011 um 17:56:08 Uhr
Goto Top
Hi,

habe da eine Idee !
Ich würde das übe einen "Callback" machen: PHP-Manual - preg_replace_callback()
Mit dem regulärem Ausdruck lässt du dann von "\n*" bis "[a-z]\n" suchen (die komplette Liste) und das gefundenen an die Callbackfunktion übergeben. In dieser lässt du den String dann Stück für Stück auseinander nehmen und baust du so deine HTML-Liste zusammen. Das HTML wird von der Funktion dann wieder zurückgegeben und an der entsprechenden stelle im Text ersetzt.

Das schwerste dabei dürfte wohl der reguläre Ausdruck sein ;)


~Arano
dog
dog 20.04.2011 um 20:33:55 Uhr
Goto Top
Markdown oder Textile benutzen.
Dann hast du eine funktionierende Lösung (was du nämlich mit den RegExen nicht hinbekommen wirst) und die Nutzer müssen nichts neues lernen.
yannick-server
yannick-server 20.04.2011 um 21:56:51 Uhr
Goto Top
Danke für die Antworten. Ich werde es mal mit dem Callback versuchen.
Das Formatieren ist auch nur fürs Forum so gedacht, alle anderen Seite lassen sich bequem über einen Editor im Backend pflegen.
Mir ist auch egal, ob die Nutzer ihren Text formatieren oder nicht, darauf kommt es bei den Diskusionen nicht an, vielleicht mal was Fett, unterstrichen oder einen Link, das wars dann aber auch schon. Martdown mit Überschriften geht schon viel zu weit.

Ich melde mich nochmal wenn ich nicht weiter komme oder eine Lösung gefunden haben.
Gruß Yannick