Stringvergleich

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Stringvergleich

    Ich habe einen String, den ich mit einem anderen vergleichen möchte. Das Problem ist, ich lese etwas aus der Datenbank aus (z.B.: Benutzername & Kennwort) die ich folgendermaßen Überprüfen möchte (Beispiel aus ASP):

    strcomp("Apfel","Birne");
    strcomp("Apfel","Apfel1");
    strcomp("Apfel","APFEL");
    strcomp("Apfel","Apfel");

    Ausgaben:
    -1 (da vollkommen unggleich)
    -1 (da auch ungleich!!)
    1 (da anzahl und Buchstaben gleich, aber untersch. klein-/großschreibung)
    0 (100%ig gleich)

    gibt es soowas auch für PHP ??

    Hab zwar schon gesucht, aber nichts gefunden

    thx

    MoRtAlAn

  • #2
    hmmm ist mir auch nichts bekannt.

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Ginge das vielleicht mit "===" besser als mit "==" ???

      === steht ja für identisch ?!

      gruss

      Kommentar


      • #4
        schaut mal unter http://php3.de/manual-lookup.php?pattern=strcmp
        da wird die Stringfunkktion strcmp() beschrieben

        Kommentar


        • #5
          warum den vergleich nicht von der datenbank erledigen lassen?

          SELECT * FROM users WHERE pw = 'apfel' AND user = 'birne'

          ??

          Kommentar


          • #6
            kommt ganz darauf an, ob man überhaupt was mit der DB vergleichen will und außerdem ist auch noch wichtig, ob MySQL überhaupt case-sensitiv eingestellt ist. Sonst bringt "Apfel" und "apfel" dasselbe Ergebnis.

            P.S.: okay, soll wohl die DB sein. Habs vergessen und ganz oben nicht nochmal gelesen. Trotzdem der Hinweis mit case-sensitiv

            Kommentar


            • #7
              mySQL:
              $len = strlen ($passwd);
              $q = mysql_query("select if ('$passwd'==PASSWD, 0, if ($len=length(PASSWD), 1, -1)) from USERS where NAME='$user'");
              list($compare) = mysql_fetch_row($q);
              wichtig: Vorsicht mit CHAR/VARCHAR/TEXT und Groß/Kleinschreibung! Zur Not der PASSWD-Spalte das Attribut BINARY geben.

              php:
              $q = mysql_query("select PASSWD from USERS where NAME='$user'");
              list ($pass) = mysql_fetch_row($q);
              $comp = (strcmp($passwd, $pass) ? (strlen($passwd)==strlen($pass)?-1:1) 0);

              -------------------------------------
              @Brain: was meinst du mit "Case-sensitiv eingestellt"? Ich kenn nur http://www.mysql.com/documentation/m...e.html#IDX1210
              Normally, if any expression in a string comparison is case sensitive, the comparison is performed in case-sensitive fashion.
              und dass alles bis auf BLOB oder andere implizit als BINARY definierte Felder case-INsensitiv sind.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                hmm, wenn du so schreibst... ja, das habe ich auch schon mal nachgelesen. Ich glaube, ich habe da was mit unterschiedlichen MySQL-Versionen verwechselt. Hast auf jeden Fall Recht...

                Kommentar


                • #9
                  Die mySQL-Funktion STRCMP() arbeitet case-sensitive auch bei 'normalen' Feldern.

                  CAT Music Files

                  Kommentar

                  Lädt...
                  X