Also, ich schreibe gerade ein Wiki (wenn ihr nicht wisst was das ist, reicht es wenn ihr euch vorstellt ich schreibe ein Board) in dem der User Listen nach folgender Syntax erstellen können soll:
Dies soll dann in
umgewandelt werden.
Mein Lösungsansatz ging wie folgt:
Zuerst sucht man mit preg_replace nach ganzen Listen (Also vom * des ersten Listenpunktes bis hinter das Zeilenende des letzten Listenpunktes), und übergibt die gefundenen Listen einem weiteren Preg_replace, das dann <ul> und </ul> jeweils an den Anfang und an das Ende der Liste setzt, und aus den einzelnen Zeilen der Liste (die mit dem * am Anfang) <li>text</li> macht.
Hier der Code dazu:
[COLOR=red]Habt ihr ideen wie's klappen könnte, oder vielleicht komplett neue Ansätze?[/COLOR]
Code:
Irgend ein Text *Listenpunkt 1 *Listenpunkt 2 *Listenpunkt 3 *[X-beliebig viele weitere Punkte] Weiter im Text
Code:
Irgend ein Text <ul> <li>Listenpunkt 1</li> <li>Listenpunkt 2</li> <li>Listenpunkt 3</li> <li>[X-beliebig viele weitere Punkte]</li> </ul> Weiter im Text
Mein Lösungsansatz ging wie folgt:
Zuerst sucht man mit preg_replace nach ganzen Listen (Also vom * des ersten Listenpunktes bis hinter das Zeilenende des letzten Listenpunktes), und übergibt die gefundenen Listen einem weiteren Preg_replace, das dann <ul> und </ul> jeweils an den Anfang und an das Ende der Liste setzt, und aus den einzelnen Zeilen der Liste (die mit dem * am Anfang) <li>text</li> macht.
Hier der Code dazu:
PHP-Code:
function find_list($string)
{
return preg_replace("/(\r\n|\n|\r)(\*.*)((\r\n|\n|\r)([^\*]))/Use", "do_list('\\2')", $string); // klappt nicht
// return preg_replace("/(((\r\n\r\n)\*.*)+)(\r\n|\r|\n)/e", "do_list('\\1')", $string); // auch nicht :(
}
function do_list($list)
{
return "Ist egal was hier steht, die funktion find_list matched nicht richtig :(";
}
EDIT:
bitte benutze [ php ] statt [ code ], wenn du php-code postest, ist besser lesbar. wahsaga
Kommentar