Hallo,
Kann es sein, dass dein Zeilenumbruch durch "\r\n" dargestellt wird? Versuchs doch mal mit Suche nach "/</li>\s/"!
hmm... habe gerade auch noch mal gesucht und bin auch schon auf das \s gestoßen - aber das bringt leider nichts.
Oder ist dein Zeilenumbruch vielleicht schon zu HTML umgewandelt, z. B. per nl2br()?
nein, ist er leider auch nicht...
vielleicht hole ich mal etwas weiter aus,
ich bin echt etwas am ende mit meinem latein.
aaaaalso:
wenn ein besucher BB-Code eingibt, wird dieser wie folgt umgwandelt:
// BB-Code durch richtige HTML Tags ersetzen
$arrHtml = array(
"[list]"=>"<ul>", "[/list]"=>"</ul>", //<ul></ul>
"[*]"=>"<li>", "[/*]"=>"</li>", //<li></li>
"[b]"=>"<strong>","[/b]"=>"</strong>", //<strong></strong>
"[i]"=>"<span font-style='italic'>", "[i]"=>"</span>", //<span></span>
"[hl]"=>"<h3>", "[/hl]"=>"</h3>", //<h3></h3>
"[quote]"=>"<div class='quote'>", "[/quote]"=>"</div>", //<div></div>
"[hr]"=>"</hr />", //<hr>
);
// Text durchgehen und nach o.g. Array ersetzen
foreach ($arrHtml as $key => $value) {
$text = str_replace( $key, $value, $text);
}
das klappt wunderbar, ohne probleme, alle BB-Codes werden ersetzt.
Ganz Ende lass ich dann noch folgendes los:
// sofern vorhanden, Zeilenumbrüche nach Blockelementen entfernen
$text = preg_replace('/</li>\n/',
'</li>',
$text);
// die verbliebenen Zeilenümbrüche in <br>-Tag umwandeln
$text = preg_replace('/\n/',"<br />",$text)
Damit will ich einfach mal nach <li>-Elementen den Umbruch entfernen.
Das zweite preg_replace, das \n zu <br> umwandelt, brauche ich aber, da ansonsten ja die "gewollten" zeilenumbrüche nicht umgewandelt werden...
ABER:
folgende eingabe in einer textarea:
[list]
[*]erster Punkt[/*]
[*]zweiter Punkt[/*]
[*]dritter Punkt[/*]
[/list]
wird im HTML dann zu
<ul>
<br /><li>erster Punkt</li><br /><li>zweiter Punkt</li><br /><li>dritter Punkt</li><br /></ul>
und das sieht natürlich echt komisch aus...
weiß denn da jemand rat?!?