dedlfix: Zu viele Zeilenumbrüche löschen

Beitrag lesen

Hi!

Ersetzt werden soll /r/n
1 /r/n = /r/n
2 /r/n = /r/n/r/n
3 /r/n = /r/n/r/n
1000 /r/n = /r/n/r/n

Wunderbar, jetzt wissen wir wenigstens, dass es DOS-Zeilenumbrüche sind, auch wenn das \ und nicht / sein sollte. Und nun kann das als Code formuliert werden, und, wie suit einwarf, geht das besser mit preg_replace(), denn bei str_replace() müsste man solange schleifen, bis sich die Stringlänge nicht mehr ändert.

$text = preg_replace('#(\r\n){2,}#', "\r\n", $text);

Beim ersten Argument ist es egal, ob du es in " oder ' setzt. Bei " erkennt PHP das \r\n und ersetzt es durch die Zeilenumbruchszeichen, bei ' wird \r\n durchgereicht und die RegExp-Machine interpretiert sie als Zeilenumbruchszeichen.

Lo!