Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Brauche Erklärung





Frage

Hallo ich bin noch nicht so gut bewappnet mit der ganzen Sache hier, kann mir jemand diesen code erklären? Hauptsächlich geht es mir um der Code zur überprüfung der email. Was bedeuten die ganzen Buchstaben? if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email)){ $mail_ok = 0; if ($email != '') { $fehler .= "- Geben Sie eine gültige E-Mail-Adresse ein!<br>"; } } else {$mail_ok = 1;} if ($mail_ok == '1') [*][sup][i] *Threadedit* 18:51:34, 23.06.2008 Admininfo: zum Artikel/ Betreff. Bitte beachte [u][url=https://supportnet.de/faqsthread/840]FAQ 2, #4[/url][/u] bei deiner nächsten Anfrage.[/i][/sup]

Antwort 1 von katy

Halli ich34,

[_a-zA-Z0-9-] bedeutet immer: eines der Zeichen Unterstrich, kleine Buchstaben, große Buchstaben, Ziffern oder Bindestrich

^ bedeutet: am Anfang

+ bedeutet: beliebig oft, mindestens 1mal

* bedeutet: beliebig oft, mindestens 0mal

zusammen:
am Anfang mindestens eins der Zeichen, dann ein . und mindestens eins der Zeichen (dies kann sich wiederholen, kann aber auch wegfallen), dann folgt zwingend ein @, dann wieder mindestens eines der Zeichen, dann zwingend ein . (dies kann sich wiederholen) dann 2-4 kleine ohne große Buchstaben

insgesamt also das Format, wie sich der Autor der Zeilen E-Mail-Adressen vorstellt. Ein paar seltene Fälle, die durchaus zulässig sind, werden nicht erkannt, dafür ein paar unsinnige Adressen (Domains mit weniger als 3 Zeichen) werden als gültig ausgewiesen.

katy

Antwort 2 von Ich34

Hallo Katy
Danke für die Antwort. Ich habe aber noch einige Fragen.

ok, wenn ich das jetzt richtig verstanden habe, dann könnte das ganze auch so aussehen:

if(!ereg("^[_e-aB-Z0-5-]+(\.[_e-aB-Z0-5-]+)*@([_e-aB-Z0-5-]+\.)+([e-aB-Z]{2,4})$", $email))

die email könnte lauten: Hans.Meier60@domain_24.de

im 1.Beispiel wurde der Unterstrich nach dem @ weggelassen. Heisst das das keine emails mit einem Domain, in dem ein Unterstich vorkommt zugelassen sind?
{2,4} bedeutet das, das die Endung (z.B. de) auch bis zu 4 Buchstaben haben kann, groß oder klein?
[a-zA-Z] <-- wozu ist hier der - da?
Wozu ist der Backslash \ da?
Und wozu ist das Sternchen vor dem @ da?
Müssen die + immer da sein wo sie im 1. Beispiel sind?

Sorry für die vielen Fragen, aber ich kann auf so was nirgends eine Antwort finden. Und irgendwie muss ich das ganze ja verstehen können.

Antwort 3 von katy

_e-aB-Z0-5-
funktioniert nicht, denn e kommt nach a

insofern liefert das immer: passt nicht!

Wenn du den Unterstrich nicht zulässt sind Adressen mit Unterstrich nicht gültig.

{2,4} bedeutet 2-4mal das, was davor steht

a-z bedeutet ein Zeichen von a bis z, also ein kleiner Buchstabe (ohne Umlaute!)

Mit \ werden Zeichen maskiert, die sonst in derlei Ausdrücken eine besondere Bedeutung haben, wie +*.

Das * hatte ich schon erklärt, zum + kann ich nur ja sagen.

Ausführliche Informationen findest du bei SelfHTML (wo sonst?)

katy