SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 12.11.2004, 12:39:19
Benutzerbild von wolles
wolles wolles ist offline
Junior Member
 
Registriert seit: Apr 2002
Ort: Belgique
Beiträge: 180
umlaute in email-check einbauen

Hallo zusammen,

ich benutze folgende Funktion, um eine eingegebene E-Mail formal zu checken:

PHP-Code:
function mailcheck ($email) {
  if (!
eregi("^[^@[:space:]]+@([[:alnum:][:digit:]-]+.)+[[:alnum:]][[:alnum:]][[:alnum:]]?$"$email)) {
    return 
1;  //wenn fehler dann returnt er true
 
} else {
    return 
0;   //wenn kein fehler dann returnt er false
 
}

Funktioniert bis dahin ganz prima.
Da es aber jetzt auch Umlautdomains gibt, wollte ich die Funktion so erweitern, daß sie eben auch die Umlaute annimmt, aber ich kriegs einfach nicht hin.

Hier einige Versuche für den entsprechenden Teilausdruck:

@([[:alnum:][:digit:]228246252-]+.)

@([[:alnum:][:digit:]äöü-]+.)

@([[:alnum:][:digit:]äöü-]+.)

Liegt es an meiner Vorgehensweise bei der Funktion, oder kann es auch sein, daß die Umlaute aus der $_POST - Variablen intern anders übergeben werden?
__________________
Wolles

Warum klettern Menschen auf einen Berg?
..vor allem, weil er da ist, Spock!
Mit Zitat antworten
  #2  
Alt 12.11.2004, 14:49:35
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Hallo,
ich würde an deiner Stelle mit preg_match() arbeiten, welches schneller ist als ereg() bzw. eregi().

Dem Bereich reguläre Ausdrücke ist im Tutorial übrigens ein komplettes Kapitel gewidmet.

Eine Lösung habe ich dir aber trotzdem anzubieten:
PHP-Code:
<?php
$regex 
"/^([a-z0-9]+([-_.]?[a-z0-9])+)@[a-z0-9äöü]+([-_.]?[a-z0-9])+.[a-z]{2,4}$/i";
    if(
preg_match($regex$var)) {
        print 
'gültige E-Mailadresse';
    }
?>
Der reguläre Ausdruck, den ich in meinem Beispiel verwendet habe, stammt von http://www.knusperpixel.com/playground/email_check/. Ich habe anschließend nur noch ä, ö und ü für mögliche Domainnamen hinzugefügt.
Mit Zitat antworten
  #3  
Alt 12.11.2004, 22:28:33
Benutzerbild von wolles
wolles wolles ist offline
Junior Member
 
Registriert seit: Apr 2002
Ort: Belgique
Beiträge: 180
umlaute in email-check einbauen

Danke erst Mal für die Antwort.

Leider funktioniert die Sache mit den Umlauten in Deinem Code auch nicht.
Hab's auch schon mit den hexadezimalen Werten der Umlaut-Zeichen versucht, aber irgendwie will es nicht hinhauen.

Das Kapitel im Tut hatte ich auch schon durchgesehen.
__________________
Wolles

Warum klettern Menschen auf einen Berg?
..vor allem, weil er da ist, Spock!
Mit Zitat antworten
  #4  
Alt 13.11.2004, 11:55:51
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Re: umlaute in email-check einbauen

Zitat:
Original geschrieben von wolles
Danke erst Mal für die Antwort.

Leider funktioniert die Sache mit den Umlauten in Deinem Code auch nicht.
Hab's auch schon mit den hexadezimalen Werten der Umlaut-Zeichen versucht, aber irgendwie will es nicht hinhauen.

Das Kapitel im Tut hatte ich auch schon durchgesehen.
Mit welcher E-Mailadresse hast du mein Beispiel denn geprüft?
Mit Zitat antworten
  #5  
Alt 13.11.2004, 12:08:19
Benutzerbild von wolles
wolles wolles ist offline
Junior Member
 
Registriert seit: Apr 2002
Ort: Belgique
Beiträge: 180
umlaute in email-check einbauen

einfach mit hans@müller.de

Sollte funktionieren, tut's aber nicht.
__________________
Wolles

Warum klettern Menschen auf einen Berg?
..vor allem, weil er da ist, Spock!
Mit Zitat antworten
  #6  
Alt 13.11.2004, 12:54:11
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Re: umlaute in email-check einbauen

Zitat:
Original geschrieben von wolles
einfach mit hans@müller.de

Sollte funktionieren, tut's aber nicht.
Funktioniert bei mir ohne Probleme.
Mit Zitat antworten
  #7  
Alt 13.11.2004, 16:58:34
Benutzerbild von wolles
wolles wolles ist offline
Junior Member
 
Registriert seit: Apr 2002
Ort: Belgique
Beiträge: 180
umlaute in email-check einbauen

Wenn ich's mit einer Variablen im Script selber teste, funktionierts auch bei mir.
Also liegt's irgendwo an der Übergabe der Variable von der letzten Seite.
Die Variable kommt aus einem Formular auf der vorherigen Seite und wird mit 'post' weitergegeben:


Halt, hab gerade noch was probiert.
Wenn ich vorher htmlentities() auf die Variable anwende, funtionierts.
Hatte eigentlich gedacht, dann würde so was .
PHP-Code:
&uuml
in der Variablen auftauchen, aber er siehts wohl doch als ü.

Ok, nix für ungut, trotzdem vielen Dank
__________________
Wolles

Warum klettern Menschen auf einen Berg?
..vor allem, weil er da ist, Spock!
Mit Zitat antworten
  #8  
Alt 13.11.2004, 19:42:55
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Re: umlaute in email-check einbauen

Zitat:
Original geschrieben von wolles
Wenn ich's mit einer Variablen im Script selber teste, funktionierts auch bei mir.
Also liegt's irgendwo an der Übergabe der Variable von der letzten Seite.
Die Variable kommt aus einem Formular auf der vorherigen Seite und wird mit 'post' weitergegeben:
Wende doch einfach mal die Funktionen trim() und stripslashes() auf die Variable an, bevor du sie prüfst.
Mit Zitat antworten
  #9  
Alt 19.11.2004, 11:44:52
knusperpixel knusperpixel ist offline
Anfänger
 
Registriert seit: Nov 2004
Ort: Hamburg
Beiträge: 1
Hallo!

Zitat:
Original geschrieben von xabbuh
...
PHP-Code:
<?php
$regex 
"/^([a-z0-9]+([-_.]?[a-z0-9])+)@[a-z0-9äöü]+([-_.]?[a-z0-9])+.[a-z]{2,4}$/i";
    if(
preg_match($regex$var)) {
        print 
'gültige E-Mailadresse';
    }
?>
Der reguläre Ausdruck, den ich in meinem Beispiel verwendet habe, stammt von http://www.knusperpixel.com/playground/email_check/. Ich habe anschließend nur noch ä, ö und ü für mögliche Domainnamen hinzugefügt.
Vielen Dank für die Ehre :-)

Ich möchte noch anmerken, daß die Backslashes vor den Punkten hier im Forum nicht angezeigt werden, aber SEHR wichtig sind (vor jeden Punkt im obigen Regulären Ausdruck gehört ein Backslash)! Ansonsten überprüft der Ausdruck an den entsprechenden Stellen nur ob IRGENDEIN Zeichen vorhanden ist - und das will man ja nicht.
Außerdem sollten die Umlaute auch in dem zweiten Block enthalten sein, da sonst E-Mail-Adressen von hans@die-müllers.de nicht erkannt werden.

Es muss also heißen:
PHP-Code:
<?php
$regex 
"/^([a-z0-9]+([-_.]?[a-z0-9])+)@[a-z0-9äöü]+([-_.]?[a-z0-9äöü])+.[a-z]{2,4}$/i";
?>
Zur Umlaut-Problematik:
Bei meinen Tests ist mir aufgefallen, daß es wichtig ist, mit welcher Zeichencodierung das Formular dargestellt wird und mit welcher Zeichen kodierung das Skript geschrieben wurde. Diese müssen übereinstimmen, damit das funktioniert.
Wenn man also seine Skripte im Editor in iso-8859-2 schreibt sollte auch das Formular auf der Seite in iso-8859-2 kodiert sein.
Ein
PHP-Code:
header("Content-type: text/html; charset=iso-8859-2"); 
hilft da weiter und wirkt Wunder (es bleibt einem natürlich freigestellt, irgendein anderes Charset anzugeben)!
__________________
--
Heute ist das morgen von dem Du gestern sprachst.
Mit Zitat antworten
  #10  
Alt 19.11.2004, 21:04:27
Benutzerbild von wolles
wolles wolles ist offline
Junior Member
 
Registriert seit: Apr 2002
Ort: Belgique
Beiträge: 180
umlaute-problematik

Hallo,

das mit dem Umlauten im zweiten Block hatte ich schon bei mir eingebaut, klappt auch alles.
Jetzt hab ich noch ein anderes Problemchen mit den Umlauten.
Auf meiner Seite können sich Kunden registrieren, die dann Ihre Zugangsdaten automatisch per Mail bekommen.
Klappt soweit auch alles.
Nun habe ich auch vorgesehen, daß diejenigen, deren E-Mail-Programme nichts mit Html anfangen können, die E-Mail auch als Text-Datei erhalten können.
Hab dazu in den Header reingeschrieben:

PHP-Code:
"Content-type: text/plain" 
Jetzt werden aber in der Mail alle Umlaute aus dem Mailtext in die entsprechenden html-Versionen ( & uml;) umgewandelt.
Komischerweise aber nicht die Werte aus den Formularen, d.h. hans@müller.de bleibt hans@müller.de, nur aus "in Ihrem Kundenmenü finden ..." wird "in Ihrem Kundenmen&uuml; finden..." .
Ich hab jetzt erst mal die Umlaute im Text durch ae,ue,oe ersetzt, aber da muss es doch eine andere Lösung geben.
Gibt es nicht das Gegenteil von htmlentities() als Befehl?

(Das mit dem Charset hab ich jetzt auch mal probiert, macht aber keinen Unterschied)
__________________
Wolles

Warum klettern Menschen auf einen Berg?
..vor allem, weil er da ist, Spock!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:03:39 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt