@viza: Deinen Ansatz zur Prüfung auf unerlaubte Zeichen finde ich ganz gut. Super auch mit der Ausgabe einer speziellen Fehlermeldung.
Doch genau wie p3e denke ich, dass es etwas zu komplex ist. Für die URL reicht es vollkommen aus auf http/https zu prüfen, die ausführliche Variante zur Prüfung auf eine korrekte Webadresse nimmt nur unnötig Ressourcen in Anspruch und ist u.U. auch fehleranfällig.
Bei der Prüfung auf unerlaubte Zeichen, würde ich das ganze Umdrehen. Also prüfen, ob NICHT erlaubte Zeichen enthalten sind, statt alle erlaubten aufzuzählen. Das verkürzt die regexp und man muss sich keine Gedanken um die Umlaute der verschiedenen Sprachen machen.
Mein Vorschlag für die URL:
und für die unerlauten Zeichen:
// check name for strange chars {} <> $ % @ # = ? ! ~ ^if (preg_match('/[\{\}<>\$%@#=\?!~\^]/', $lastname)) { // show error message} Um vollen Schutz zu gewährleisten, sollte die Prüfung auf unerlaubte Zeichen für folgende Felder eingebaut werden: firstname, lastname, street_address, city, suburb, state