Auf Sonderzeichen prüfen: Mit Ausnahmen!

VanHellsehn

Erfahrenes Mitglied
Hi,
Ich möchte eine Sonderzeichen überprüfung machen.
Allerdings soll diese das Sonderzeichen - ignorieren..
Wie kann ich das machen ?
 
Überprüfen ob eine Zeichenkette nur aus bestimmten Zeichen besteht, geht am besten mit Regular Expressions (Regex). Für einen Benutzernamen würde ich Buchstaben (a-z, A-Z), Zahlen (0-9),Bindestriche und Unterstriche erlauben, wobei das erste Zeichen ein Buchstabe sein sollte. Im Regex-Code sieht das so aus:
Code:
^[a-zA-Z][a-zA-Z0-9_-]*$


Erklärung:
^...$         -> Legt fest dass die Zeichenkette 1:1 mit dem Format übereinstimmen muss
[a-zA-Z]      -> Am Anfang ein Zeichen von a bis z (groß oder klein)
[a-zA-Z0-9_-] -> Ein Buchstabe (a bis z; groß oder klein), eine Zahl (0 bis 9), ein Unterstrich oder ein Bindestrich
*             -> Die Voranstehende Zeichenmenge 0 bis n mal.

In PHP kannst du den Code über die Funktion preg_match Anwenden.
PHP:
if (preg_match('/^[a-zA-Z][a-zA-Z0-9_-]*$/', $Username)) 
{
	# Benutzername OK
} 
else 
{
	# Ungültiges Benutzernamenformat
}

Ich kann dir nur empfehlen Reguläre Ausdrücke zu lernen. Sind sehr nützlich und für noch viel mehr als für Validierungsaufgaben zu gebrauchen.
 
Will jetzt kein neuen Thread aufmachen deswegen, bezieht sich teilweise auch auf reguläre Ausdrücke.

In meinem Formular soll man einen Namen eintragen, das heißt Vorname und Nachname mit Leerzeichen getrennt. Hab jetzt einfach mal irgendwas eingegeben mit ">" oder "<"!
Wenn ich das dann aus der Datenbank auslesen will und sagen wir einfach echo $datenbank["name"] wird der Teil der nach dem > kommt nicht korrekt dargestellt, da das HTML an der Stelle ja nicht mehr stimmt.

Wie kann ich dieses Problem umgehen. Vorher überprüfen ob kein > < eingetragen wird? Wenn ja, wie kann ich das europäische Alphabet mit Leerzeichen zulassen? Gibt es auch einen Weg das obengennante Problem beim echo $datenbank["name"] zu beseitigen?

Grüße,
prinzschleifer
 
Will jetzt kein neuen Thread aufmachen deswegen, bezieht sich teilweise auch auf reguläre Ausdrücke.

In meinem Formular soll man einen Namen eintragen, das heißt Vorname und Nachname mit Leerzeichen getrennt. Hab jetzt einfach mal irgendwas eingegeben mit ">" oder "<"!
Wenn ich das dann aus der Datenbank auslesen will und sagen wir einfach echo $datenbank["name"] wird der Teil der nach dem > kommt nicht korrekt dargestellt, da das HTML an der Stelle ja nicht mehr stimmt.

Wie kann ich dieses Problem umgehen. Vorher überprüfen ob kein > < eingetragen wird? Wenn ja, wie kann ich das europäische Alphabet mit Leerzeichen zulassen? Gibt es auch einen Weg das obengennante Problem beim echo $datenbank["name"] zu beseitigen?

Grüße,
prinzschleifer

Hallo,

schau dir dazu mal die Funktion htmlentities an. In deinem Falle würde also ein einfaches (siehe Code) reichen.

PHP:
echo htmlentities($datenbank["name"]);

Gruß
Bratkartoffel
 
Zurück