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

Code: Alles auswählen

[a-zA-Z0-9._-]+
Es sind Kleinbuchstaben, Großbuchstaben, Ziffern, ., _ und - erlaubt und zwar muss der gesamte Ausdruck mindestens ein Zeichen umfassen.
Dann muss ein @ Zeichen kommen.

Code: Alles auswählen

[a-zA-Z0-9.-]+
Im Grunde das gleiche wie vor dem @, nur dass jetzt kein _ erlaubt ist.
Jetzt muss ein Punkt kommen.

Code: Alles auswählen

[A-Za-z][A-Za-z]+
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.

Code: Alles auswählen

preg_match('#^\w{4,}@\w{4,}\.\w{4,}$#',$email)


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&ouml;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&ouml;rter gez&auml;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&ouml;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&ouml;rter gez&auml;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?