Seite 1 von 1

Falsches Ergebnis kommt zurück

Verfasst: 03.05.2006 17:22
von Maniac5000

Code: Alles auswählen

function checknick($nick) {
global $STYLESHEET, $REMOTE_FILES_DIR, $DATADIR, $nickzeichen;
$b=true;
$len=strlen($nick);
for($i=0;$i<$len;$i++) {
  $zz=substr($nick,$i,1);
  if(strstr($nickzeichen,(string)$zz)==false) {
    $b=false; 
  }
}
}
Das ist meine Funktion. Jetzt wird die ausgeführt mit

Code: Alles auswählen

$nick = 'Tobi';
und

Code: Alles auswählen

$nickzeichen='abcdefghijklmnopqrstuvwxyzäüöABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß0123456789';
Als Ergebnis wird

Code: Alles auswählen

$b=false; 
zurückgegeben. Aber eigentlich müsste

Code: Alles auswählen

$b=true;
zurückgegeben werden. Kann mir eiern helfen?

Verfasst: 03.05.2006 17:31
von Sebastian R.
Da kann doch nur False rauskomme. Da wird doch jedes Zeichen der Kette mit dem Username verglichen, oder?

Verfasst: 03.05.2006 17:32
von Maniac5000
Ja, aber meines Wissen wird die bedingung nur erfüllt, wenn

Code: Alles auswählen

(string)$zz
nicht in

Code: Alles auswählen

$nickzeichen
vorkommt.

Verfasst: 03.05.2006 17:35
von Sebastian R.
strstr vergleicht doch den ganzen String. Sprich ob das $zz in dem String $nickzeichen vorkommt. Da "T" da aber vorkommt ist $b = false.

Verfasst: 03.05.2006 17:42
von Maniac5000
Also, daran lag es nicht. Ich hatte Recht, aber ich habe vergessen, dass ich $b natürlich per return zurükgeben muss. Jetzt funktioniert das Ganze.

Verfasst: 03.05.2006 22:07
von Pyramide

Code: Alles auswählen

function checknick($nick, $nickzeichen) {
    return preg_match('#^['.$nickzeichen.']+$#', $nick);
}

checknick('Tobi', 'A-Za-z0-9äöüÄÖÜ');