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-Key: 164986

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: Arano
Arano Apr 20, 2011 at 15:56:08 (UTC)
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
Member: dog
dog Apr 20, 2011 at 18:33:55 (UTC)
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.
Member: yannick-server
yannick-server Apr 20, 2011 at 19:56:51 (UTC)
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