Seite 1 von 3
E-Mail Prüfung
Verfasst: 09.10.2005 15:15
von witzigerkiller
Hallo leute, habe folgendes scriptchen auf einer internetseite gefunden:
Code: Alles auswählen
ereg("^([a-zA-Z0-9._-]+)@([a-zA-Z0-9.-]+.[A-Za-z][A-Za-z]+)$", $email)) //Hier wird die eMail-Adresse überprüft
kann mir mal einer erklären, was das alles heißt, wie das aufgebaut iset und so?
Re: E-Mail Prüfung
Verfasst: 09.10.2005 15:46
von jasc
Code: Alles auswählen
ereg("^([a-zA-Z0-9._-]+)@([a-zA-Z0-9.-]+.[A-Za-z][A-Za-z]+)$", $email)) //Hier wird die eMail-Adresse überprüft
Es sind Kleinbuchstaben, Großbuchstaben, Ziffern, ., _ und - erlaubt und zwar muss der gesamte Ausdruck mindestens ein Zeichen umfassen.
Dann muss ein @ Zeichen kommen.
Im Grunde das gleiche wie vor dem @, nur dass jetzt kein _ erlaubt ist.
Jetzt muss ein Punkt kommen.
Hier sind nur Klein- und Großbuchstaben erlaubt, wobei es mindestens zwei Buchstaben sein müssen.
Das ganze ist ohne Gewähr, weil ich mich mit dieser PHP-Funktion nicht auskenne. Ich habe das einfach mal alles als reguläre Ausdrücke aufgefasst und dann mein Wissen aus der theoretischen Informatik angewandt. Ich hoffe, das stimmt so, macht jedenfalls Sinn, wenn man weiß, wie E-Mail-Adressen aufgebaut sind

.
Verfasst: 09.10.2005 15:51
von witzigerkiller
danke, aber ich will nur klein groß haben, und es müsssen mindestens. vor dem @ und danach und nach dem punkt 4 zeichen kommen.
ist das dann richtig?
Code: Alles auswählen
ereg("^([a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]+)@([a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]+.[A-Za-z][A-Za-z][a-zA-Z][a-zA-Z]+)$", $email))
Verfasst: 09.10.2005 15:57
von jasc
Der Logik nach müsste das passen, einfach mal testen, ob es geht

.
Verfasst: 09.10.2005 16:18
von kellanved
witzigerkiller hat geschrieben:
ist das dann richtig?
Code: Alles auswählen
ereg("^([a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]+)@([a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]+.[A-Za-z][A-Za-z][a-zA-Z][a-zA-Z]+)$", $email))
Jaein. Ersteinmal ist ein kleiner Fehler in dem ursprünglichen Vorschlag: '.' gilt ausserhalb von eckigen Klammern als irgendein Zeichen. Richtiger wäre
Code: Alles auswählen
ereg("^([a-zA-Z0-9._-]+)@([a-zA-Z0-9.-]+\.[A-Za-z][A-Za-z]+)$", $email))
Bezogen auf Deinen Ansatz:
Code: Alles auswählen
ereg("^([a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]+)@([a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]+\.[A-Za-z][A-Za-z][a-zA-Z][a-zA-Z]+)$", $email))
Oder etwas schöner:
Code: Alles auswählen
ereg('^([[:alpha:]]{4,})@([[:alpha:]]{4,})\.([[:alpha:]]{4,})$',$email))
Und da Du die Gruppen wahrscheinlich nicht brauchst:
Code: Alles auswählen
ereg('^[[:alpha:]]{4,}@[[:alpha:]]{4,}\.[[:alpha:]]{4,}$',$email))
ABER:
von ereg ist abzuraten.
wäre schneller und kürzer. ('\w' bedeuted irgendein Buchstabe)
Verfasst: 09.10.2005 16:23
von witzigerkiller
danke, danke dir..
So, nun habe ich wieder ein logic problem, ich komme einfach nicht mit meinem köpfchen hinterher:
Ich möchte gerne eine zeichenkette von 20 wörtern nur die ersten 5 ausgeben, soll für meine news sein.
SO, nun habe ich das schon soweit geschafft, habe sie zerlegt, und gezählt.
Was muss ich nun machen, damit ich mit substr(); nur die ersten 5 wörter ausgebe?
Code: Alles auswählen
<?PHP
/*Eine Zeichenkette mit 20 Wörtern wird hier erstellt*/
$string_20 = "Wort1 Wort2 Wort3 Wort4 Wort5 Wort6 Wort7 Wort8 Wort9 Wort10 Wort11 Wort12 Wort13 Wort14 Wort15 Wort16 Wort17 Wort18 Wort19 Wort20";
/*Hier wird nun die zeichenkette zerlegt*/
$string_zerlegt = explode(" ", $string_20);
/*Hier werden die wörter gezählt*/
$einzel_string = count($string_zerlegt);
?>
Danke schonmal
Verfasst: 09.10.2005 16:39
von kellanved
Ginge zwar eleganter, aber der Einfachheit halber:
Code: Alles auswählen
$result = array();
preg_match('#^(\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+)#', $article, $result);
$result[1] enthält die gesuchten Wörter.
Verfasst: 09.10.2005 16:41
von witzigerkiller
hä? was?
Verfasst: 09.10.2005 16:43
von kellanved
$article = 'Wort1 Wort2 Wort3 Wort4 Wort5 Wort6 Wort7 Wort8 Wort9 Wort10 Wort11 Wort12 Wort13 Wort14 Wort15 Wort16 Wort17 Wort18 Wort19 Wort20';
$result = array();
preg_match('#^(\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+)#', $article, $result);
echo $result[1];
Liefert:
Wort1 Wort2 Wort3 Wort4 Wort5
.
Verfasst: 09.10.2005 16:49
von witzigerkiller
so, ich möchte aber gerne hilfestellung zu mein script:
Code: Alles auswählen
<?PHP
//*Eine Zeichenkette mit 20 Wörtern wird hier erstellt*/
$wort =5;
$string_20 = "Wort1 Wort2 Wort3 Wort4 Wort5 Wort6 Wort7 Wort8 Wort9 Wort10 Wort11 Wort12 Wort13 Wort14 Wort15 Wort16 Wort17 Wort18 Wort19 Wort20";
/*Hier wird nun die zeichenkette zerlegt*/
$string_zerlegt = explode(" ", $string_20);
/*Hier werden die wörter gezählt*/
$einzel_string = count($string_zerlegt);
/* Hier komme ich an das $wort wortchen*/
$welches_wort = (($einzel_string + $wort) - $einzel_string);
?>
Ich weiß jetzt wie ich an das 5te word ran komme.
Aber wie kann ich jetzt nun die ersten 5 wörter ausgeben?