Hi,
$text =~ s/[\n\r]+/<br>/g;
Naja, wie Du selbst schon sagtest, wuerde das eine Folgen von mehreren \n eliminieren. Koennen wir also so nicht machen.
Eventuell kannst Du das "+" noch durch "{1,2}" ersetzen, um nicht "\n\n\n\n\n" auch durch ein einzelnes Break zu ersetzen.
Das wuerde aber dummerweise ein \n\n genauso behandeln wie ein \r\n, aber ersteres sind _zwei_ UNIX-Umbrueche und das andere ist nur _ein_ DOS-Umbruch. Geht also auch nicht.
$text =~ s/\n\r\n\r\r\n/<br>/g;
Das gefaellt mir schon recht gut. Nur weiss ich nicht, wie Perl da regiert, wenn es auf \r\n trifft. Wird es gleich mit \r\n zuschlagen, oder wird es erst ein \r erkennen und durch <br> ersetzen und dann ein \n und dieses auch noch ersetzen? Falls letzteres, dann hilft vielleicht schon eine Umstellung der Reihenfolge:
$text =~ s/\r\n\n\r/<br>/g; # \n\r gibt es wohl glaube ich nirgendwo. Aehem.. oder doch?
Falls das nicht ausreicht muesste man wohl notgedrungen etwas wie
if ($text =~ /\n/) {
$text =~ s/\r//g;
$text =~ s/\n/<br>/g;
} else {
$text =~ s/\r/<br>/g;
}
auffahren. Der if-Zweig fuer DOS und UNIX, der else-Zweig fuer den Mac. Falls es wirklich irgendwo sowas wie \n\r geben sollte, wird das im if-Zweig mit abgehandelt.
Wie Tom schon sagte: Zum Glück ist das Leben so einfach... ;-)
Calocybe
P.S. Uebrigens wird in den Netscape-Bookmarkdateien \r\r\n fuer den Umbruch verwendet (vielleicht haben sie fuer den PC aus Versehen zweimal das \n in ein \r\n umgewandelt *g*).