Carsten: Zeilenumbruch

Beitrag lesen

Hi Marcus,

... als auch "jetzt" hätte noch in die Zeile gepasst.
Woran kann das liegen?

Das ist ein Fehler im regulären Ausdruck (da habe ich wohl schlampig getestet.)
Der Ausdruch ist ja sozusagen 'andersrum' formuliert als die Aufgabebstellung:
"Ersetzte jedes Leerzeichen nach höchstens 60 Zeichen durch einen Zeilenvorschub."

Dadurch bekommt die letzte Zeile immer einen Zeilenvorschub, auch wenn sie
gar keine 60 Zeichen hat (hier kein Problem). Aber wenn die Zeile nicht mit
einem Leerzeichen endet, dann wird der Zeilenumbruch _vor_ das letzte Wort
gesetzt. Billige Abhilfe: Einfach immer ein Leerzeichen anhängen:
  $text=nl2br(preg_replace("/(.{0,59}) /",">\1<\n",$text." "));

Für Zeilenumbrüche im Eingabestring war der Ausdruck so schlichtweg nicht
vorgesehen. Der Ausdruck müsste dafür auch noch die \n matchen:

$text=nl2br(preg_replace("/(.{0,59})[ \n]/",">\1<\n",$text."\n"));

...und Zeichenketten länger als 60 Zeichen ohne Leerzeichen werden davon immer
noch nicht gesplittet.

Gruss,
Carsten