Tobias Kloth: ärger mit regulärem ausdruck

Beitrag lesen

Hallo Dennis,

Ferner setzt du durch vorraus, dass der Teil vor dem @ mindestens 3 Zeichen lang sein muss - ist dem denn wirklich so?

nein, ich habe auch eine E-Mailadresse die mit »to@« anfängt.

In einer Zeichenklasse, also zwischen [ und ] hat ein . immer seine normale Bedeutung und gilt nicht "als Platzhalter für ein beliebiges Zeichen (außer Whitespace)", für was er sonst gilt.

der Punkt erkennt lediglich keine Zeilenumbrüche (außer man verwendet den Modifikator »s«)

Dann ist deine Logik da auch falsch. Da blickt doch keiner mehr durch, mach das lieber so:
([.]|-|_)?

»[._-]?« sollte es auch tun (ggf. noch runde Klammern um die eckigen um das gefundene Zeichen "festzuhalten")

Sollte eigentlich genau das gleiche bewirken: Entweder ein -, oder ein _, oder ein beliebiges Zeichen, oder gar nichts.

mhh... ein paar Zeilen weiter oben behauptest du noch, dass ein »[.]« nur einen Punkt findet und nicht ein beliebiges Zeichen (was afaik auch richtig ist) - und jetzt soll »[.]«  beliebige Zeichen finden (in dem Fall wäre es übrigends relativ sinnlos »-« und »_« noch extra aufzuführen - sie würden ja auch vom Punkt gefunden :-))

Die restlichen logischen Fehler (die sich einander ähneln) lasse ich jetzt mal außer Acht.

zu erwähnen wäre vielleicht noch ».{1}« was das gleiche ist wie ».« :-)

Trotzdem mal noch ein Lösungsansatz für deinen RegEx: Du könntest den Modifier U (für ungreedy, also "unhungrig"/nicht gefräßig) verwenden.

ich würde den RegEx gleich wegwerfen - in E-Mailadressen sind nämlich noch _wesentlich_ mehr Zeichen erlaubt (schon alleine die Umlaute in Umlautdomains, siehe http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/)

$correct_nopt  = @fopen("http://www.".$treffer[1],"r");

woher willst du wissen, das
  a) die Domain per http ereichbar ist? (bei dem Domain-Teil meiner FH-Adresse (»student.fh-nuernberg.de«) würdest du hier auf Granit beißen)
  b) die Subdomain "www" eingerichtet ist
?

Was ich versuche ist, den Host aus dem Domain Teil anzusprechen. Dass da natürlich auch richtige E-Mails verweigert werden können, weil der Server z.B. grade down ist, ist klar.

selbst wenn der Test erfolgreich ist, ist immernochnicht sicher, dass die E-Mailadresse auch existiert ...

Na ja, da müsste man sicherlich noch was dran machen....

ja, z.B. einen ganz einfachen regulären Ausdruck wie »~^.+@.+..{1,20}$~« nehmen: so prüfst du auf den grundlegensten Syntax (zeichen@zeichen.zeichen) - und wirklich auf Gültigkeit und Existenz(!) kannst du sowieso nicht testen.

Grüße aus Nürnberg
Tobias