Offtopic
palicora Mh das sind ja dürftige Infos?...
Nicht eingeloggt

Registrieren
Login

Michael
Ehrenmitglied
kein Rang
- 13.01.08 17:39 Uhr
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

Ti-Systems
Ehrenmitglied

- 13.01.08 17:19 Uhr
Danke für d<s Tutorial, wird sicher welchen helfen...
Hab erst gerade in einem Buch darüber gelsesen...
Diese Funktionen sind sehr praktisch...

Michael
Ehrenmitglied
kein Rang
- 13.01.08 17:39 Uhr
Hier noch eine Kleine Demo: www.coderworld.eu/preg_match

Ti-Systems
Ehrenmitglied

- 13.01.08 17:19 Uhr
Jo..danke finde ich toll, ich habe aber leider einen Fehler gefunden:

Wenn ich bei E-Mail Adresse z.B. Angege test@test.test, dann geht es, aber wenn ich dann z.B. mache:
timo.furrer@gmx.ch

geht es nicht, wegen dem Punkt zwischen timo und furrer.

Wollte es einfach nur sagen...

Michael
Ehrenmitglied
kein Rang
- 13.01.08 17:39 Uhr
Fehler behoben

Ti-Systems
Ehrenmitglied

- 13.01.08 17:19 Uhr
Ok..da hab ich aber noch ein indirekter Fehler gefunden:

Bei Postleizahl, haben wir Schweizer nur vier Ziffern, z.B. 6330 oder so..
Aber musste ja nicht beheben, da die meisten hier sowieso Deutsche sind..

Michael
Ehrenmitglied
kein Rang
- 13.01.08 17:39 Uhr
Nein, kein Problem. Dann mach ich 4 und/oder 5. Danke für den Tipp
Edit: behoben



©2011 Itschi.Net