Benutzereingaben müssen immer abgesichert werden. Dadurch werden Sicherheitslücken minimiert, SQL Injections verhindert und XSS (Cross-site scripting) Attacken vermiden. Bei einer einfachen Stichwortsuche, wie es in meinem Fall ist, haben Sonderzeichen nichts zu suchen und können bedenkenlos entfernt werden.

In PHP gelingt uns dies am einfachsten mit der Funktion preg_replace() (php.net). Zusammen mit einem Regulären Ausdruck entfernt die Funktion alle nicht alphanumerischen Zeichen aus einem String. Nur Buchstaben, Zahlen und einfache Leerzeichen bleiben bestehen.

preg_replace("/[^A-Za-z0-9 ]/", '', $string);

Damit keine Umlaute entfernt werden, müssen wir diese auch noch mit aufnehmen:

preg_replace("/[^A-Za-z0-9äÄüÜöÖß ]/", '', $string);

Wenden wir die Funktion an, erhalten wir ein saubere Textausgabe:

Hallo!                                    : Hallo
Hallo, ich bin ein Test.                  : Hallo ich bin ein Test
Umlaute gehören zum ABC.                  : Umlaute gehören zum ABC
Seid gegrüßt                              : Seid gegrüßt
Ich bin eine 'SQL'"! Injection\\\"        : Ich bin eine SQL Injection
Ich bin eine 'SQL' Injection~$            : Ich bin eine SQL Injection
, ; . : - _ # ' + * ~ Ohne Sonderzeichen. : Ohne Sonderzeichen