1) Funktionsname "only_alphanumeric" hört sich irgendwie besser an als "keine_sonderzeichen".
2) Kannst die Variable ruhig $Länge nennen. PHP hat keine Probleme bei Umlauten.
3) Wenn du oben
$Anzahl = 0 schreibst, solltest du dann auch bei
substr_count jeweils $Anzahl und nicht $anzahl schreiben. PHP unterscheidet Groß- und Kleinschreibung.
4) Das bei den Ziffern stimmt schon. Da brauchst du nicht den Umweg über ihren Hexadezimalwert gehen, weils ja Zahlen sind. Nur bei den Buchstaben wars eben nötig, weil es sowas wie
for ($a = "A"; $a =< "Z"; $a++) eben nicht gibt und nunmal eine Schleife am sinnvollsten ist, weil die Buchstaben ja nebeneinander liegen.
5) Für - und _ kannst du dir die Schleifen und den Umweg über chr() sparen. Da kannst du direkt schreiben:
PHP-Code:
$Anzahl += substr_count($String,"-");
$Anzahl += substr_count($String,"_");
6) Pregmatch find ich unnötig. Hab ich bisher noch nie verwendet. Da musst du ja aufpassen, dass keines der nicht zu verwendenden Sonderzeichen eines ist, das da eine besondere Bedeutung hat, sonst musst du dir wieder überlegen, wie du das da escapen musst.
7) So eine Funktion wie only_alphanumeric verwende ich selber bei meiner Nutzeranmeldung, bloß hat sie einen anderen Namen, weil nur wenige Zeichen nicht erlaubt sind.