[formular] email überprüfung....

SirToby

Erfahrenes Mitglied
Könnte mir jemand vielleicht mal folgende Zeile ins Hoch-Deutsche übersetzen? Ich kann mir zwar denken, was da passiert, doch kann ich mit mir das nicht 100%ig erklären und würde es ganz gerne verstehen, was das mit den ganzen ' \ {} $ usw. usw. zu sagen hat:

PHP:
if (!ereg("^[a-zA-Z0-9_\.\-]{1,*}@[a-zA-Z0-9_\.\-]{2,*}.[a-zA-Z]{2,4}$", $checkip)) {
.
.
.

Dankeschön!
 
Der Beginn regulärer Ausdrücke wird mit einem ^ gekennzeichnet und das Ende mit einem $ wie man oben sieht.

Im ersten Teil einer Emailadresse können Kleinbuchstaben sowie Großbuchtaben von a-z vorkommen. AUch zahlen von 0-9 ein "_", ein Punkt und ein Bindestrich (Minus).

{1,*} bezieht sich auf das davor in der eckigen Klammer was ich als n bezeichne.
n kommt mindestens 1 mal vor. Der * kennzeichnet, dass es nochmal vorkommen kann (muss es aber nicht), und gleich nochmal kommen kann, ... (also 0 oder mehr mal).

Dann muss ein "@" kommen, was eh klar ist in einer Emailadresse :D

Das was in eckiger Klammer nach dem @ steht ist wie das oben erklärte. Das muss mindestens 2 mal vorkommen und kann optional, wie oben auch) nochmal vorkommen und auch öfters.
Danach kommt typischerweise ein Punkt (.) in einer Mailadresse gefolgt von Buchstaben von a-z groß oder klein mindestes 2 mal und höchstens 4 mal.

So schaut dann eine Mailadresse aus :D

Zum Nachschaun noch : http://www.drweb.de/php/regulaere-ausdruecke.shtml

ciao nauti
 
Zuletzt bearbeitet:
Endlich mal was verständliches

Dieser Thread sollte zu einem Tutorial verwandelt werden :-)

Auch hier auf tutorials.de gibts ein Tut zu den regular Expressions:

Tutorial

Grüße Posseidon
 
Habet Dank für eure Antworten :)

Jetzt weiß ich endlich, was das heißen soll, was ich da in den Quellcode einfüge *lol*
 
So ein Rotz - *hmpf* - irgendwie haut die Überprüfung der email-addy net hin, denn selbst wenn ich eine syntaktisch korrekte email-Adresse angebe, gibt er mir zurück, dass selbige falsch sei.....vielleicht findet ja jemand meinen Fehler:

PHP:
//EMAIL-FORMAT KONTROLLIEREN!
         if (preg_match_all("^[a-z|A-Z|0-9|_|.|-]{1,*}@[a-z|A-Z|0-9|_|.|-]{2,*}.[a-z|A-Z]{2,4}^", $_POST['gb_email'], $matches)) {
           $gb_email = $matches[0];
           exit;
         }
         else {
           echo "<span class=err_msg>Gib bitte eine g&uuml;ltige e-mail Adresse an!</span><br/><br/>
                <form name=neu method=post action=javascript:history.back(); enctype=multipart/form-data>
                  <table width=\"600\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">
                    <tr>
                      <td align=\"center\">
                        <input type=\"submit\" name=\"weiter\" value=\"&nbsp;&nbsp;Zur&uuml;ck&nbsp;&nbsp;\" class=\"normal_10\" style=\"border: 1px solid #FFFFFF; background-color: #7C84D0\"></input>
                      </td>
                    </tr>
                  </table>        
                </form>";
           exit;
         }

Dankeschön!
 
Das ist das Zeichen für "oder" - habe es aber jetzt weggemacht durch ein posting bei http://www.php.net - aber es geht immer noch nix :-(

PHP:
if (preg_match_all("^[a-zA-Z0-9_\.\-]{1,*}@[a-zA-Z0-9_\.\-]{2,*}.[a-zA-Z]{2,4}^", $_POST['gb_email'], $matches)) {
           $gb_email = $matches[0];
           exit;
         }
         else {
           echo "<span class=err_msg>Gib bitte eine g&uuml;ltige e-mail Adresse an!</span><br/><br/>
                <form name=neu method=post action=javascript:history.back(); enctype=multipart/form-data>
                  <table width=\"600\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">
                    <tr>
                      <td align=\"center\">
                        <input type=\"submit\" name=\"weiter\" value=\"&nbsp;&nbsp;Zur&uuml;ck&nbsp;&nbsp;\" class=\"normal_10\" style=\"border: 1px solid #FFFFFF; background-color: #7C84D0\"></input>
                      </td>
                    </tr>
                  </table>        
                </form>";
           exit;
         }
 
Das Ende regulärer Ausdrücke wird mit einem $ gekennzeichnet.
Schau mal dein Ende :D

mfg nauti

//edit:

ich hab das nun getestet und bin draufgekommen, dass statt den {2,*} usw ein + gehört das bedeutet glaub ich (ohne nachzuschaun) 1 oder mehr mal. Warum es mit den {} nicht geht weiß ich jetzt auch nicht genau aber das + arbeitet korrekt.
Also: "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+.[a-zA-Z]+$";
geht bei mir
 
Zuletzt bearbeitet:
Hallo,

SilentWarrior hat recht, Sonderzeichen müssen mit einem \ gekennzeichnet werden aber das hab ich versucht und ist anscheinend nicht unbedingt nötig bei einem Punkt.

ciao nauti

//edit:

"^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+.[a-zA-Z]{2,4}$" gilt bei mir auch als korrekt. Anscheinend liegt es immer daran, ob ein * in den {} ist weil sobald das ist, gibts einen Fehler.
 
Zuletzt bearbeitet:
Zurück