Shopsystem ShopPilot Shoploesung Diskussionen und Infos zum Shopsystem ShopPilot
Willkommen Gast. Bitte einloggen oder registrieren.
Mai 23, 2012, 07:18:30

Einloggen mit Benutzername, Passwort und Sitzungslänge
Suche:     Erweiterte Suche
5257 Beiträge in 1422 Themen von 333 Mitglieder
Neuestes Mitglied: pje
* Übersicht Hilfe Login Registrieren
+  Diskussionen und Infos zum Shopsystem ShopPilot
|-+  ShopPilot
| |-+  SSP - Shop Server Pages
| | |-+  RegEx Frage
0 Mitglieder und 2 Gäste betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: RegEx Frage  (Gelesen 1210 mal)
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1182


WWW
« am: Mai 19, 2009, 17:19:25 »

Hallo,

ich habe nachgebaute "Inline Fehlermeldungen mit Bedingung" bei denen 2 mail Adressen überprüft werden sollen.
das funktioniert genau so wie es soll  Cheesy
die mail Prüfung ist nur grob, reicht aber für diesen Zweck im Prinzip aus.
eine Bedingung würde ich allerdings sehr gerne noch dazu nehmen:
kein "www." am Anfang, da ich diesen Fehler bei meinen Kunden immer wieder habe

bei meiner Suche im web habe ich eine lustige Definition gefunden
Zitat
Wenn man in einem Script etwas sieht, das so aussieht, als wenn der Programmierer eingeschlafen und mit dem Kopf auf die Tastatur gefallen ist, dann hat man wahrscheinlich RegEx gefunden
aber leider keine Lösung wie ich eine zusätzliche Prüfung auf www (also Adressen wie www.name@domain.xx) einbauen kann.

mein einschlafundmitKopfaufTastaturfall Code schaut jetzt so aus:
Code:
if ($mail !~  /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/)   {$fehler = qq|fehler1=mail1f|;}

kann mir da bitte jemand helfen?
« Letzte Änderung: Mai 19, 2009, 17:32:44 von dobra » Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 407


« Antwort #1 am: Mai 20, 2009, 01:07:41 »

Code:
if ($mail !~  /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/)   {$fehler = qq|fehler1=mail1f|;}
if ($mail =~ /^www\./i) {$fehler = qq|fehler1=mail1f|;}

 Cool
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1182


WWW
« Antwort #2 am: Mai 20, 2009, 05:21:37 »

Hallo ahe,

Danke
so geht's natürlich auch Wink
nachdem ich aber noch einige komplexere Bedingungen mit mehreren verschachtelten && und || habe, wollte ich die www Prüfung eigentlich integriert und nicht separat machen...

Nachtrag:
hab's geschafft  Cheesy
SO werden jetzt alle Bedingungen und Fehlermeldungen mit Prüfung auf www. korrekt verarbeitet:
Code:
my $fehler;
if ($nachricht ne "3" &&  !length($mail)) { $fehler = qq|fehler1=mail1|;}
if (($nachricht ne "3" && length($mail) && $mail !~  /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/) || $mail =~ /^www./i)   {$fehler = qq|fehler1=mail1f|;}
if ($antwort ne "2" && !length($absender)) { $fehler = qq|fehler2=mail2|;}
if (($antwort ne "2" && length($absender) && $absender !~  /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/) || $absender =~ /^www./i)  {$fehler = qq|fehler2=mail2f|;}
if (($nachricht ne "3" && length($mail ) < 8)  && ($antwort ne "2" &&  length($absender ) < 8) )  {  $fehler = qq|fehler1=mail1&fehler2=mail2|;}

if (($nachricht eq "3" || ($mail =~ /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/ && $mail !~ /^www./)) && ($antwort eq "2" || ($absender =~ /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/ && $absender !~ /^www./)) ){

my $ok = qq|UPDATE $table SET SCHREIBEN = '$schreiben',FREISCHALTEN = '$frei',ANTWORTEN = '$antwort',NACHRICHT='$nachricht',A_FREI = '$commfrei',AEMAIL='$mail',ABSENDER='$absender'|;
ssp::exec_sql($ok, 1);
my $err = ssp::get_last_sqlerr();
if (!$err) {$errmsg = "Die Änderungen wurden gespeichert"; }
}
else {
use CGI qw(:standard);
print redirect(
-URL => "$ssp::xxpath?showbynamebl_global,__xxsession__,,,$fehler",
);
}

« Letzte Änderung: Mai 20, 2009, 07:15:46 von dobra » Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 407


« Antwort #3 am: Mai 20, 2009, 08:41:49 »

Hallo dobra,

für solche Anwendungsfälle wurden in der Programmierung die Funktionen erfunden Wink

Code:

sub is_valid_email {
    my $mail = shift;
    return ($mail =~ /^([^\s@,:"<>]+)@([^\s@,:"<>]+\.[^\s@,:"<>.\d]{2,}|(\d{1,3}\.){3}\d{1,3})$/ && $mail !~ /^www./);
}   

Dann brauchen Sie nicht mitten im Code jedes mal den ganzen regulären Ausdruck mit && / || Verknüpfung zu schreiben sondern zb

Code:

if (($nachricht ne "3" && length($mail) && !is_valid_email($mail))   {$fehler = qq|fehler1=mail1f|;}   
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1182


WWW
« Antwort #4 am: Mai 20, 2009, 08:45:00 »

Hallo ahe,

vielen Dank!!!
ich muß halt noch viiiiiiiieeeeeel lernen....
Gespeichert

Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  

mysitelist Impressum Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS