OK dass mit dem Escapen scheint genau dass zu sein was ich suche.
$_POST['nachricht'] = preg_replace('/[^-_.0-9a-zA-ZäÄöÖüÜß., @]/', '', $_POST["nachricht"]);
Maskieren(=escapen) und die Zeichen komplett löschen sind nicht das selbe!
Es ist auch nicht die feine Art in $_POST herumzuschreiben, z.B. wird das "fatal", wenn man gewisse Daten für 2 Verschiedene Kontexte aufbereiten muss. (Z.B. Text für eine URL und dann den gleichen Text noch für SQL)
Wie du nun richtig maskierst hängt davon ab, was du mit den Daten anstelllen willst:
"Denn die aufbereiteten Daten sind in aller Regel nur für das jeweilige Ausgabemedium nützlich."
funktioniert soweit. Jetzt würde ich gerne zusätzlich die Zeichen ! und / erlauben. Muss diese wohl irgendwie maskieren...nur wie???
In regulären Ausdrücken maskiert man mit einem vorangestelltem Backslash. Je nach dem ob du doppelte(") oder einfache(') Anführungszeichen für den String benutzt, und welches Zeichen du maskieren willst musst du eventuell den Backslash selbst escapen.
Bsp.:
'/[^\/]/'
"/[^\\n]/"
"/[^\\\"/]/"
(hier sieht man schon am Syntax-Highlight, was maskiert wird und was nicht)
Mehr dazu hier.
MfG
bubble
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye