List BBcode umwandeln

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hi zusammen,

Ich hab ein kleines Problem und zwar möchte ich denn BBCode

  • erster Eintrag
  • zweiter Eintrag

in html umwandeln.

PHP:
 # Listen
        $var = preg_replace("/\[list](.*)\[\/list\]/siU", "<ul>\\1</ul>", $var);
        $var = preg_replace("/\[list=(1|a)](.*)\[\/list\]/siU", "<ol type=\"\\1\">\\2</ol>", $var);
        $var = preg_replace("/\[*](.*)\\r\\n/siU", "<li>\\1</li>", $var);

die mit gekennzeichneten Listenpunkte werden bei mir nicht alle umgewandelt warum auch immer :confused:

Ich habe dann ein paar Listenpunkte und ein teil wird nicht umgewandelt und nur [* ausgegeben.

Die Nummerische Liste funktioniert garnicht.
 
Zuletzt bearbeitet von einem Moderator:
Code:
[*]

Das sollte ordentlich maskiert werden.
Weiterhin würde ich einen Listeneintrag nicht durch einen Zeilenumbruch beenden, sondern wenn das nächste Zeichen beginnt.

Code:
#\[\*\](.*)#

Das wäre mein Vorschlag.
 
Wenn ich das so ändere funktioniert nur der erste Listenpunkt alle anderen nicht...

PHP:
$var = preg_replace("#\[\*\](.*)#", "<li>\\1</li>", $var);
 
PHP:
$var = "[*] listeneintrag \r\n [*]noch einer \r\n [*]und noch einer";

$var = preg_replace("#\[\*\](.*)#", "<li>\\1</li>", $var);  

var_dump($var);

Ausgabe:
Code:
string '<li> listeneintrag 
</li>
 <li>noch einer 
</li>
<li>und noch einer</li>' (length=73)
 
Es hängt wohl damit zusammen das der Text im Forum keine Zeilenumbrüche enthält.

Test....Test2...

füge ich einen Zeilenumbruch ein wird er auf der Homepage richtig umgewandelt.

Test....

Test2...

Was kann ich hier noch ändern damit das ganze auch ohne Zeilenumbrüche richtig umgewandelt wird ?
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

du musst die Gier des Ausdrucks umkehren. Das kannst du mit einem Fragezeichen hinter dem eingesetzten Quantor erreichen oder du setzt den U - Modifier!
 
Das habe ich schon probiert:

PHP:
$var = preg_replace("/\[\*\](.*)/U", "<li>\\1</li>", $var);

Mein jetziger Stand,

damit sieht man zwar die Listenpunkte aber der Text ist nicht im <li> Tag

sieht im Quellcode so aus:

<ul><li></li>Listenpunkt1Text<li></li>Listenpunkt2Text ...........</ul>

Selbiges gilt dann auch für

PHP:
$var = preg_replace("/\[\*\](.*?)/si", "<li>\\1</li>", $var);
 
Zurück