Der folgende Beitrag wurde am 16. 07. 2004, 21:33 Uhr von Badboy46 veröffentlicht.
Hallo,
ich möchte ein String überprüfen
Bedingung ist... er muss eine Zahl und ein Buchstaben enthalten
bis jetzt hab ich das mit zwei ereg Anweisungen gelöst
gibt es eine andere Möglichkeit, womit man das schöner lösen kann?
Der folgende Beitrag wurde am 16. 07. 2004, 21:48 Uhr von Sönke Tesch veröffentlicht.
> ich möchte ein String überprüfen
> Bedingung ist... er muss eine Zahl und ein Buchstaben enthalten
/[0-9][a-z]|[a-z][0-9]/i oder besser die Abkürzung /\d\w|\w\d/ (letzteres Perl-kompatibel, keine Ahnung, ob das mit POSIX geht).
Gruß,
soenk.e
Der folgende Beitrag wurde am 16. 07. 2004, 21:51 Uhr von lulu veröffentlicht.
Huhu Badboy46
> bis jetzt hab ich das mit zwei ereg Anweisungen gelöst
> gibt es eine andere Möglichkeit, womit man das schöner lösen kann?
Vielleicht mit nur einer "ereg Anweisung" resp. einem regulären Ausdruck?
Wobei zwei Anweisungen nicht zwangsläufig schlechter als eine sein müssen.
Das macht die Sache doch eigentlich ziemlich transparent wenn man
z.B. folgendes hat
$success = (preg_match('#[a-z]#i', $s) && preg_match('#\d#', $s));
Um das in einen Ausdruck zu quetschen müsste man ja etwas wie folgt formulieren
$success = preg_match('#([a-z]\d)|(\d[a-z])#i', $s);
Da man ja nicht weiß ob erst ein Buchstabe und dann eine Zahl oder umgekehrt vorkommen.
Das zweite Beispiel dürfte bei einem Performance-Test deutlich schlechter als das erste abschneiden.
Und wenn jetzt z.B. noch auf ein Sonderzeichen geprüft werden soll (ich vermute mal es geht hier um Passwörter) ist das im ersten Fall schnell ergänzt ohne das die Übersichtlichkeit leidet.
Im zweiten Beispiel fängt das dann an "murxig" zu werden.
Viele Grüße
lulu
--
bythewaythewebsuxgoofflineandenjoytheday
Der folgende Beitrag wurde am 16. 07. 2004, 22:40 Uhr von Badboy46 veröffentlicht.
Hallo lulu,
ich hab das so probiert
$check = ereg('([0-9]+)', $password) && ereg('([a-Z]+)', $password) ? true:false;
da bekomme ich diese Fehlermeldung :-(
Warning: ereg(): REG_ERANGE in /home/xxx/www.xxx.de/auth/_lib/function.php on line 62
Der folgende Beitrag wurde am 16. 07. 2004, 22:57 Uhr von lulu veröffentlicht.
Huhu BadBoy
> $check = ereg('([0-9]+)', $password) && ereg('([a-Z]+)', $password) ? true:false;
>
> da bekomme ich diese Fehlermeldung :-(
> Warning: ereg(): REG_ERANGE in /home/xxx/www.xxx.de/auth/_lib/function.php on line 62
Ah, ein kniffliger Fehler ....
die Zeichenklasse [a-Z] ist es, mit [a-z] klappt es.
True und false brauchst Du in diesem Fall aber nicht extra zuweisen.
Durch die logische UND-Verknüpfung gibt der Ausdruck auch so entweder true, oder false zurück.
Die Klammern und das + brauchst Du nicht, wobei es nichts schadet, aber Du wolltest ja etwas schönes ;-)
Beachte das Du eregi benutzen musst wenn case insensitve gematched werden soll.
Also das hier sollte es tun
$check = ereg('[0-9]', $password) && eregi('[a-z]', $password);
Gute Nacht und viele Grüße
lulu
--
bythewaythewebsuxgoofflineandenjoytheday
Der folgende Beitrag wurde am 16. 07. 2004, 23:12 Uhr von Badboy46 veröffentlicht.
Hallo lulu,
> $check = ereg('[0-9]', $password) && eregi('[a-z]', $password);
funktioniert jetzt soweit...
diese Funktion gibt mir jetzt true, wenn eine Ziffer und ein Buchstabe enthalten ist...
ich bräcuhte dann aber ein false, wenn eins davon nicht zutrifft ein true
ist das der richtige Lösungsansatz?
$check = !ereg('[0-9]', $password) || !eregi('[a-z]', $password);
so funktioniert es, ist nur bissel verwirrend wegen den "||"
Der folgende Beitrag wurde am 16. 07. 2004, 23:05 Uhr von Tobias Kloth veröffentlicht.
Hallo,
> $check = ereg('([0-9]+)', $password) && ereg('([a-Z]+)', $password) ? true:false;
verwende besser die preg_*-Funktionen (hier: preg_match) - die sind mächtiger und afaik auch schneller (->http://de.php.net/ref.pcre)
> da bekomme ich diese Fehlermeldung :-(
> Warning: ereg(): REG_ERANGE in /home/xxx/www.xxx.de/auth/_lib/function.php on line 62
"REG_ERANGE" kommt auf php.net nicht vor, aber eine Googlesuche lässt mich vermuten, dass dieser Fehlercode auftaucht wenn man in einem regulären Ausdruck einen ungültigen Bereich angegeben hat (in deinem Fall ist a-Z (kleines A aber großes Z) falsch - versuch es mal mit '[a-z]' (oder wenn du auch Großbuchstaben finden willst mit '[a-zA-Z]').
Grüße aus Nürnberg
Tobias
--
Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
Der folgende Beitrag wurde am 16. 07. 2004, 23:18 Uhr von Badboy46 veröffentlicht.
Hallo Tobias,
ich wusse nicht, dass preg_* schneller ist
ich dachte, dass die Funktion bzgl. der regülären Ausdrucke etwas langsamer ist
kann man eigentlich davon ausgehen, dass Provider regex unterstützen?
Oder gibt es einige Provider die PHP mit "--without-pcre-regex" kompilieren?
bzgl. a-Z
irgendwie hab ich in Erinnerung, dass ich das so schon mal verwendet habe, kann mich aber auch irren ;-)
Der folgende Beitrag wurde am 16. 07. 2004, 23:42 Uhr von Tobias Kloth veröffentlicht.
Hallo,
> kann man eigentlich davon ausgehen, dass Provider regex unterstützen?
wenn er eine halbwegs aktuelle Version einsetzt imho ja.
> Oder gibt es einige Provider die PHP mit "--without-pcre-regex" kompilieren?
ich weiß es nicht, kann mir es aber nicht vorstellen - probier es doch einfach mal aus, merh als nicht funktionieren kann es doch nicht :-)
Grüße aus Nürnberg
Tobias
--
Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
Der folgende Beitrag wurde am 16. 07. 2004, 23:46 Uhr von Badboy46 veröffentlicht.
Hallo
> > Oder gibt es einige Provider die PHP mit "--without-pcre-regex" kompilieren?
> ich weiß es nicht, kann mir es aber nicht vorstellen - probier es doch einfach mal aus, merh als nicht funktionieren kann es doch nicht :-)
bei mir funktioniert es auf jedenfall ;-)
nur wenn ich mein Script anderen zur Verfügung stelle, sieht das ziemlich schlecht aus, wenn es dann Fehlermeldungen hagelt ;-)
Kay
Der folgende Beitrag wurde am 17. 07. 2004, 12:01 Uhr von Tom veröffentlicht.
Hello,
> bei mir funktioniert es auf jedenfall ;-)
> nur wenn ich mein Script anderen zur Verfügung stelle, sieht das ziemlich schlecht aus, wenn es dann Fehlermeldungen hagelt ;-)
Du kannst ja auch mal
print_r(get_defined_functions);
in dein Script schreiben.
Dass weißt Du es genauer.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Der folgende Beitrag wurde am 17. 07. 2004, 16:08 Uhr von Badboy46 veröffentlicht.
Hallo
> Du kannst ja auch mal
>
> print_r(get_defined_functions);
Notice: Use of undefined constant get_defined_functions - assumed 'get_defined_functions' in /home/xxx/www.xxx.de/auth/test.php on line 13
get_defined_functions
hab "print_r(get_defined_functions);" eingetragen... oder meinst du damit was anderes?
ps. gibt es hier eine Funktion, womit man sich neue Beiträge anzeigen lassen kann?
Der folgende Beitrag wurde am 17. 07. 2004, 16:18 Uhr von Tom veröffentlicht.
Hello,
> > Du kannst ja auch mal
> >
> > print_r(get_defined_functions);
>
> Notice: Use of undefined constant get_defined_functions - assumed 'get_defined_functions' in /home/xxx/www.xxx.de/auth/test.php on line 13
> get_defined_functions
>
> hab "print_r(get_defined_functions);" eingetragen... oder meinst du damit was anderes?
Ach sorry, ich habe wieder den PHP-Quirks-Mode benutzt.
print_r(get_defined_functions());
so sollte es aber nun funktionieren.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Der folgende Beitrag wurde am 17. 07. 2004, 21:48 Uhr von Badboy46 veröffentlicht.
Hallo Tom,
viel bringt mir das aber nicht ;-)
wenn ich das in mein Script einbaue, weiss ich nur, was mein Server unterstützt, wenn ich aber dieses Script jemand anders gebe, bringt es mir ja nix, wenn das ausgegeben wird *g*
ich könnte höchstes eine Abfrage irgendwie basteln, wo das abgefragt wird... hm...
Kay
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4