Hallo, nun will ich euch erklären, wie man einen String in einem Regulären Audruck mit preg_match() verwendet. Wir nehmen mal an, Sie wollen
eine E-Mail auf eine gültige Syntax überprüfen. Dazu nehmen wir die Funktion preg_match()
Dazu erstellen wir eine normale if Abfrage mit der preg_match() Funktion:
Code:
if (preg_match('', $string)) {
echo ('Diese E-Mail hat eine gültige Syntax :)');
} else {
die ('Diese E-Mail hat keine gültige Syntax :(');
}
Nun benötigen wir die Parameter bzw. Regulären Ausdrücke für die Funktion: preg_match()
Kurze Erklärung:
Code:
preg_match('/^$/i')
Diese Zeichen
/^ geben an, das es sich um den Anfang eines Strings handelt.
$/i ist der Ende eines String mit dem Operatoren.
Code:
preg_match('/^[a-zA-Z0-9-|_]$/i')
Diese Zeichen in der Eckigen Klammer sollen bestimmen, welche Zeichen erlaubt sind. Ein E-Mail Syntax besteht ja immer aus 5 Gruppen:
1.
info 2.
@ 3.
domain 4.
. 5.
de
Nun haben wir die erste Grupp bestimmt. Nun wollen wir das @ Zeichen und die danachfolgende Gruppe bestimmen:
Code:
preg_match('/^[a-zA-Z0-9-|_]+@[a-zA-Z0-9-]$/i')
Nun haben wir das @ Zeichen auch runtergebracht. Das
+ Zeichen sagt uns, was wir etwas dranhängen wollen.
Das Zeichen:
|- sagt uns, es dürfen auch
_ enthalten sein. Das
| ist ein
oder Operator wie bei php
&& oder
and
Nun weiter zu den letzten Gruppen:
Code:
preg_match('/^[a-zA-Z0-9-|_]+@[a-zA-Z0-9-]+.[a-z0-9]$/i')
Jetzt haben wir den Punkt bestimmt. Wir wissen, das der Domainname danach mit einem Punkt enden muss. Das
. sagt uns, das es zwingend erforderlich ist,
einen Punkt zu setzen. Da es unterschiedliche Endungen bei Domainnamen gibt, wie zb.
.com, .de, .info entschließen wir uns, eine Maximale Anzahl an
Zeichen zu setzen. Das machen wir mit
{2,4} Das heisst, das minmal 2 und maximal 4 Zeichen erlaubt sind. Das sieht dann so aus:
Code:
preg_match('/^[a-zA-Z0-9-|_]+@[a-zA-Z0-9-]+.[a-z0-9]{2,4}$/i')
So, jetzt müssen wir einen String zuweisen. Dazu nutzen wir einfach die preg_match($pattern, $string)
Hier nochmal der Komplette Code:
Code:
if (preg_match('/^[a-zA-Z0-9-|_]+@[a-zA-Z0-9-]+.[a-z0-9]{2,4}$/i', $string)) {
echo ('Das ist eine E-Mail');
} else {
die ('Das ist keine gültige E-Mail');
}
War doch einfach oder?
Weitere Beispiele finden Sie unter:
hier
Hier noch ein Simples Postleitzahl prüfen:
Code:
<?
if (preg_match('/^[0-9]{5}$/i', $string)) {
echo (' Okay, das ist eine Postleitzahl');
} else {
die ('Nein, das ist keine Postleitzahl');
}
?>
So, nun mal nen wenig lernen
Hier noch eine Kleine Demo:
www.coderworld.eu/preg_match