Moin!
PS: wenn "nl2br" ersetzt werden soll, was durchaus Sinn machen kann, dann:
define('LF', 0x0A);
define('CR', 0x0D);
define('BR', nl2br(LF)); // oder nl2br(PHP_EOL) - Server spezifisch
$text = strtr($text, array(CR.LF => BR, LF.CR => BR, CR => BR, LF => BR));
Du definierst hier drei Konstanten, die ich mal eher als überflüssig bezeichnen würde, die aber Zeit kosten. Wenn überhaupt, würde ich das Array zentral definieren (geht natürlich nicht als Konstante), oder als Funktion.
Also im Zweifel sowas:
~~~php
$text = strtr($text, array("\r\n" => "<br />\n", "\n\r" => "<br />\n", "\r" => "<br />\n", "\n" => "<br />\n"));
Andererseits kann ich mir gerade nicht so ganz vorstellen, welches Szenario eintreffen muss, damit man Zeilenenden server-systemspezifisch behandeln will - weil die Zeilenenden sich doch üblicherweise erst auf dem Client auswirken, und alle Browser die möglichen Kombinationen als "Whitespace in HTML" behandeln.
- Sven Rautenberg