du kannst nach dem Vorahndensein des @ - Zeichens abfragen.
PHP hab ich kein Plan, DW mach das per js so:
PHP-Code:<input type="text" name="textfield" onBlur="MM_validateForm('textfield','','NisEmail');return document.MM_returnValue">
Greets,
welchen Regeln genau untersteht eine Email-Adresse ?!
Was genau darf sie enthalten .. und was nicht ?
Hat da jemand einen Link oder ne Erklärung ?
Und wie frage ich das am besten mit PHP ab? !
Gibts da echt keine Funktion für ?!!?.. *wunder*
keep looking forward... Hydrax
du kannst nach dem Vorahndensein des @ - Zeichens abfragen.
PHP hab ich kein Plan, DW mach das per js so:
PHP-Code:<input type="text" name="textfield" onBlur="MM_validateForm('textfield','','NisEmail');return document.MM_returnValue">
emails dürfen so aussehen:
^[\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$
Das Script in PHP ist 200 Zeilen lang... muss mal schaun, ob ich es irgendwo noch gespeichert habe. Bin mir aber nicht sicher!
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
Herzlichen Dank...
Jetzt wird mir das ganze mit den Suchmustern auch klarer.
Danke schön! Wieder was gelernt !
Eine Frage noch:
Dürfen Email keine _ enthalten ?
hydrax_hatwasgelernt@traum-projekt.com
wäre eine somit eine ungültige Email-Adresse ?
keep looking forward... Hydrax
... mir ist noch keine Emailadresse mir _ untergekommen...
Hast du ne Homepage? mit Emailaliasen? Dann versuch doch einfach mal so eine Einzurichten!
Ich weiss nur, das auch vor dem @ ein . sein darf.
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
hi
unterstrich ist erlaubt
Gruß
SMURF
hi,
der php-code zum checken dauert:
if (!preg_match("=^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$=i",$email))
{
}
in $email steht natürlich die mailadresse drin, was auch sonst
mfg dares
ich bin krebs erregend - wer ist krebs?
zum php code:
einige von denen funktionieren nicht mit domains wie co.uk, jp.org
usw. Also wers braucht, checken.
(wie das konkret bei dem oben aussieht hab ich nicht getestet)
<table> was my first love and it will be my last
Hi !!
Ich benutze immer folgenden Ausdruck
Dieser Ausdruck akzeptiert auch Subdomains...PHP-Code:if (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$",$email))
{ echo "Mail-Adresse falsch!";}
Durch eregi braucht man nicht auf Groß- und Kleinschreibung zu achten.
Gruß Jan
Was steht denn dann noch in den restlichen 198 Zeilen des Scripts?Original geschrieben von the0bone
Das Script in PHP ist 200 Zeilen lang... muss mal schaun, ob ich es irgendwo noch gespeichert habe. Bin mir aber nicht sicher!![]()
Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)
herzlichen dank fuer die antworten...
jetzt muss ich mir die ausdrücke nurnoch im kopf auseinanderklamüsern, damit ich das auch verstehe
ich setzt das nun mal auf erledigt.
keep looking forward... Hydrax
@wanni
Vermutlich ist das ein Script, das neben der eMail-Adresse auch noch viertausend andere Formulareingaben auf Richtigkeit überprüft.
![]()
Das könnte sein...von daher wäre das gar nicht schlecht, wenn Du das Script noch finden würdest, dann könnte man doch ne Zusammenstellung der gängigsten regulären Ausdrücke machen, um die verschiedensten Sachen zu überprüfen...
Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)
Was ich meine setzt sich auch vielen Einzeltests zusammen:
Diese Funktionen ruft ihr dann je nach bedarf auf.PHP-Code:<?php
function validate_email ($eaddr="")
{
if (empty($eaddr))
{
#print "[$eaddr] is not valid\n";
return false;
}
$laddr = "";
$laddr = $eaddr;
# if the addr-spec is in a route-addr, strip away the phrase and <>s
$laddr = preg_replace('/^.*</','', $laddr);
$laddr = preg_replace('/>.*$/','',$laddr);
if (preg_match('/^\@.*:/',$laddr)) #path-relative domain
{
list($domain,$addr_spec) = preg_split('/:/',$laddr);
$domain = preg_replace('/^\@/','',$domain);
if (!is_domain($domain)) { return false; }
$laddr = $addr_spec;
}
return(is_addr_spec($laddr));
}
function is_addr_spec ( $eaddr = "" )
{
list($local_part,$domain) = preg_split('/\@/',$eaddr);
if (!is_local_part($local_part) || !is_domain($domain))
{
#print "[$eaddr] is not valid\n";
return false;
}
else
{
#print "[$eaddr] is valid\n";
return true;
}
}
#local-part = word *("." word) ; uninterpreted
function is_local_part ( $local_part = "" )
{
if (empty($local_part)) { return false; }
$bit_array = preg_split('/\./',$local_part);
while (list(,$bit) = each($bit_array))
{
if (!is_word($bit)) { return false; }
}
return true;
}
#word = atom / quoted-string
#quoted-string = <"> *(qtext/quoted-pair) <">; Regular qtext or
# ; quoted chars.
#qtext = <any CHAR excepting <">, ; => may be folded
# "\" & CR, and including
# linear-white-space>
#quoted-pair = "\" CHAR ; may quote any char
function is_word ( $word = "")
{
if (preg_match('/^".*"$/i',$word))
{
return(is_quoted_string($word));
}
return(is_atom($word));
}
function is_quoted_string ( $word = "")
{
$word = preg_replace('/^"/','',$word); # remove leading quote
$word = preg_replace('/"$/','',$word); # remove trailing quote
$word = preg_replace('/\\+/','',$word); # remove any quoted-pairs
if (preg_match('/\"\\\r/',$word)) # if ", \ or CR, it's bad qtext
{
return false;
}
return true;
}
#atom = 1*<any CHAR except specials, SPACE and CTLs>
#specials = "(" / ")" / "<" / ">" / "@" ; Must be in quoted-
# / "," / ";" / ":" / "\" / <"> ; string, to use
# / "." / "[" / "]" ; within a word.
#SPACE = <ASCII SP, space> ; ( 40, 32.)
#CTL = <any ASCII control ; ( 0- 37, 0.- 31.)
# character and DEL> ; ( 177, 127.)
function is_atom ( $atom = "")
{
if (
(preg_match('/[\(\)\<\>\@\,\;\:\\\"\.\[\]]/',$atom)) # specials
|| (preg_match('/\040/',$atom)) # SPACE
|| (preg_match('/[\x00-\x1F]/',$atom)) # CTLs
)
{
return false;
}
return true;
}
#domain = sub-domain *("." sub-domain)
#sub-domain = domain-ref / domain-literal
#domain-ref = atom ; symbolic reference
function is_domain ( $domain = "")
{
if (empty($domain)) { return false; }
# this is not strictly required, but is 99% likely sign of a bad domain
if (!preg_match('/\./',$domain)) { return false; }
$dbit_array = preg_split('/./',$domain);
while (list(,$dbit) = each($dbit_array))
{
if (!is_sub_domain($dbit)) { return false; }
}
return true;
}
function is_sub_domain ( $subd = "")
{
if (preg_match('/^\[.*\]$/',$subd)) #domain-literal
{
return(is_domain_literal($subd));
}
return(is_atom($subd));
}
#domain-literal = "[" *(dtext / quoted-pair) "]"
#dtext = <any CHAR excluding "[", ; => may be folded
# "]", "\" & CR, & including
# linear-white-space>
#quoted-pair = "\" CHAR ; may quote any char
function is_domain_literal ( $dom = "")
{
$dom = preg_replace('/\\+/','',$dom); # remove quoted pairs
if (preg_match('/[\[\]\\\r]/',$dom)) # bad dtext characters
{
return false;
}
return true;
}
// void print_validate_email ([string email address])
// This function prints out the result of calling the validate_email()
// function on a given email address.
function print_validate_email ($eaddr="")
{
$result = validate_email($eaddr) ? "is valid" : "is not valid";
print "<h4>email address (".htmlspecialchars($eaddr).") $result</h4>\n";
}
?>
the0bone
Wissen ist Macht, nichts Wissen macht nichts! Doch auch auch wenn man es nicht besser weiss, sollte man beim Erstellen einer Webseite auf Frames und Tabellen verzichten.
Also das is echt etwas übertrieben, nur um eine eMail zu checken - diese Version ist viel kürzer und funktioniert recht gut:
Das läuft mit allen Domains, Unterstrichen etc. ...PHP-Code:$pattern="#^[-!\#$%&\"*+\\./\d=?A-Z^_|'a-z{|}~]+"."@"."[-!\#$%&\"*+\\/\d=?A-Z^_|'a-z{|}~]+\."."[-!\#$%&\"*+\\./\d=?A-Z^_|'a-z{|}~]+$s#";
if (!preg_match($pattern,$email)) $fehler[] = "Sie haben keine gültige Email-Adresse angegeben.";
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)