ich habe nun mysql_real_escape_string mit eingebaut, daher brauche ich diese ganzen ereg_replace Sachen nicht mehr. Ist ein sehr guter Tipp gewesen.
Ich hab' "kontextgerecht" geschrieben, nicht dass du überall mysql_real_escape_string() verwenden sollst - beim Lesen der Daten aus der Datenbank und bei der Ausgabe als HTML ist htmlspecialchars() wesentlich sinnvoller.
Vielleicht schreibe ich hier mal den HTML, JAVASCRIPT und PHP Code auf, damit Ihr mich besser versteht.
Ich hab' dein Problem bereits verstanden, nachvollziehbar ist es nicht
$mtext = mysql_real_escape_string($_POST['nachricht']);
mysql_query ("INSERT INTOtable\_1
SETtext
= 'substr($mtext,0,180)'");
Umgekehrt - wenn du den String "hallo, ich bin's wirklich" escapest und dann auf 15 zeichen kürzt, hast du folgendes
"hallo, ich bin" aber eigentlich willst du "hallo, ich bin'" haben
Nur was die ganze Zeit nicht klappt ist, wenn die Eingabe beispielsweise 60 Zeichen und leere Zeilen ("ENTER" "<br />") enthält, wird nichts angezeigt.
Brich dein Problem auf mehrere Teilprobleme herrunter und verifiziere in jedem Schritt, was mit deinen Daten passiert.
A)
Übergabe des Formulars per POST/GET an dein Script - Ausgabe der Daten (ist alles noch OK?)
B)
Schreiben in die Datenbank - Prüfen z.B. per phpMyAdmin (ist alles noch OK?)
C)
Lesen der Daten aus der Datenbank, prüfen ob's noch passt (var_dump/echo ...)
D)
Ausgabe der Daten im HTML-Kontext
Solange du das nicht machst, ist alles pure raterei.