echo $begrüßung;
Ich wollte eigentlich alle Steuerzeichen filtern, bzw. als übergebene Variablen nur a-z 0-9 etc. zulassen um z.B eine sql-injection zu verhindern.
Langsam wird es konkret. SQL-Injection verhindert man nicht am Eingang sondern am Ausgang. Denn auch bei der Verarbeitung zwischendrin können Zeichen entstehen, die beim Zusammenstellen eines SQL-Statements zu berücksichtigen sind. Deshalb wendet man die Schutzmaßnahmen erst dann an, wenn sie erforderlich werden.
Das nächste Problem bekommst du bei der Ausgabe in einen HTML-Kontext. Hier sind andere Zeichen zu berücksichtigen als beispielsweise bei SQL-Statements. Und auch hier ist es sinnvoll, erst zum Übergang in den HTML-Kontext die Daten zu behandeln.
Weiter geht es mit den Problemen, wenn weitere Ausgabemedien/-kontexte hinzukommen. All diese Probleme sind keine mehr, wenn du die kontextgerechte Behandlung konsequent berücksichtigst. Du wirst es nicht durchhalten können, dich generell auf die wenigen "guten Zeichen" zu beschränken. Deshalb ist dieser Alles-Böse-Wegfiltern-Ansatz zum Scheitern verurteilt.
echo "$verabschiedung $name";