E-Mail Prüfung

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

E-Mail Prüfung

Beitrag 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?
Benutzeravatar
jasc
Ehemaliges Teammitglied
Beiträge: 2497
Registriert: 24.05.2001 02:00
Wohnort: Hergensweiler bei Lindau/B

Re: E-Mail Prüfung

Beitrag 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 ;-).
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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)) 
Benutzeravatar
jasc
Ehemaliges Teammitglied
Beiträge: 2497
Registriert: 24.05.2001 02:00
Wohnort: Hergensweiler bei Lindau/B

Beitrag von jasc »

Der Logik nach müsste das passen, einfach mal testen, ob es geht ;-).
Benutzeravatar
kellanved
Mitglied
Beiträge: 570
Registriert: 05.02.2005 15:15
Wohnort: Berlin

Beitrag 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)
Bitte keine Supportanfragen via PM
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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
Benutzeravatar
kellanved
Mitglied
Beiträge: 570
Registriert: 05.02.2005 15:15
Wohnort: Berlin

Beitrag 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.
Bitte keine Supportanfragen via PM
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

hä? was?
Benutzeravatar
kellanved
Mitglied
Beiträge: 570
Registriert: 05.02.2005 15:15
Wohnort: Berlin

Beitrag 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
.
Bitte keine Supportanfragen via PM
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag 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?
Antworten

Zurück zu „Coding & Technik“