das mit dem " und ' habe ich mit ereg_replace hinbekommen.
warum?
Was spricht gegen eine kontextgerechte Behandlung der Daten? Schreibe die Daten entsprechend maskiert in deine Datenbank (mysql_real_escape_string() ist das Mittel der Wahl). Dort kann ruhig ' oder " stehen (im übrigen ist " im MySQL-Kontext völlig harmlos). Es ist absolut nicht notwendig, die Daten irgendwie zu ersetzen oder gar als nummerische oder benannte Referenzen in die Datenbank zu schreiben. Ein ' oder ein " hat, auch wenn das vermutlich mal als HTML ausgegeben wird, in der Datenbank ansich nix verloren. Dort sind die Daten üblicherweise möglichst Formatneutral hinterlegt.
Zudem sind die preg-Funktionen den ereg-Funktionen eindeutig vorzuziehen Siehe "Notes" - stellvertretend für alle POSIX-kompatiblen regulären Ausdrücke.
Wenn ich 60 Zeichen eingebe danach ein leere Zeile kommt und danach wieder 60 Zeichen eingebe wird gar nichts angezeigt.
Nicht nachvollziehbar.
Ich habe festgestellt, dass es mit den Zeilenümbrüchen zu tun haben muss.
Wie hast du das festgestellt? Mir ist kein Fall bekannt, in dem es zu einer Nichtdarstellung im HTML-Kontext führt, nur weil der Inhalt eines Elements ein Whitespace-Zeichen beinhaltet.
Wäre es sinnvoll Zeilenumbrüche mit ereg_replace("\n"," ") zu ersetzen?
Nein - zumal du mit \n keinen \r\n oder \r abdeckst, weiters ist ein regulärer Ausdruck für eine simple Zeichenkettenersetzung der Overkill, drittens gibt's dazu eigenen Funktionen z.B. nl2br() und zuletzt: ist ein geschütztes Leerzeichen, \n ein das EOL/Linebreak-Zeichen.