Ankündigung

Einklappen
Keine Ankündigung bisher.

Strpos findet kein Leerzeichen???

Einklappen

Neue Werbung 2019

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

  • Strpos findet kein Leerzeichen???

    Hallo,

    ich bin am verzweifeln, weil ich die Position eines Leerzeichens innerhalb eines Strings finden will, strpos die Existenz der Leerzeichen aber völlig ignoriert.

    Der String:
    "Server-Video qlogd 8335 - - qlogd[8335]: conn log: Users: ftp-user, Source IP: 192.168.1.206, Computer name: localhost, Connection type: FTP, Accessed resources: ---, Action: Login OK"

    Der Code:
    PHP-Code:
        $hn_ende        stripos ($zeile_aktuell" ");
        echo 
    "ENDE: ".$hn_ende
    Die Ausgabe:
    ENDE: 0

    Ersetze ich das Leerzeichen im "Needle-Teil" von Stripos durch ein "q" gibt das Script korrekterweise "ENDE: 14" aus.

    Ich hatte schon den Verdacht, dass die Lücken nur aussehen wie Leerzeichen, möglicherweise aber evtl. TABs oder so was sind. Ich habe deshalb mal den String mit allen ASCII-Codes ausgeben lassen. Ergebnis: Das Lesezeichen ist ein Leerzeichen (ASCII Code 32).

    Hat jemand 'ne Idee?

    Gruß
    Carsten


  • #2
    http://de1.php.net/stripos
    0 ist ein gültiges Ergebnis, FALSE nicht. Finde raus, ob tatsächlich 0 oder FALSE zurückgegeben wurde.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      0 kann auch das erste Zeichen sein und nicht nur "keines" (false)! Nutze var_dump() statt echo und siehe doku zu stripos().

      Versuch rein Interesse halber mal:
      PHP-Code:
      var_dumpstrpos($zeile_aktuell" ") ); 
      Übrigens: strpos() sollte auch reichen, es gibt kein großes und kleines Leerzeichen

      LG
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Wenn ich das
        PHP-Code:
        $zeile_aktuell "Server-Video qlogd 8335 - - qlogd[8335]: conn log: Users: ftp-user, Source IP: 192.168.1.206, Computer name: localhost, Connection type: FTP, Accessed resources: ---, Action: Login OK";
        $hn_ende        stripos ($zeile_aktuell" "); 
            echo 
        "ENDE: ".$hn_ende
        laufen lasse wird erwartungsgemäß 12 ausgegeben... Der von dir gepostete Code reicht meiner Meinung nach nicht aus um den von dir beschriebenen Fehler zu finden.

        Kommentar


        • #5
          @tklausl und hausl
          Es ist wirklich eine 0. var_dump gibt auch int(0) zurück.
          (stripos war auch nur eine "verzweiflungstat", nachdem ich es vorher stundenlang mit strpos versucht hatte ... )

          @monolith
          Ich glaube das hat mich auf eine Spur geführt: wenn ich es so mache wie du, und $zeile_aktuell quasi fest definiere, dann funktioniert es.
          Nur in der "scriptumgebung", wenn $zeile_aktuell aus einer Datei in ein Array übergeben und dann aus dem Array ausgelesen wird, funktioniert es nicht ...

          Kommentar


          • #6
            @tklausl und hausl
            Es ist wirklich eine 0. var_dump gibt auch int(0) zurück.
            Genau, 0 ist die erste Stelle deines Strings.

            PHP-Code:
            $s "affe";
            var_dumpstrpos($s"a") );  // int(0) 
            Musst halt ein trim() oder ltrim() etc.. vorher machen, etc...
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Hm. Seltsam.
              Tatsächlich hat ein Offset von 1 bei strpos zum gewünschten Ergebnis geführt (Obwohl ich mir sicher bin, dass das erstes Zeichen KEIN Leerzeichen ist...)

              Trotzdem: Vielen Dank an alle, die geholfen haben

              Kommentar


              • #8
                Zitat von HiddenX Beitrag anzeigen
                (Obwohl ich mir sicher bin, dass das erstes Zeichen KEIN Leerzeichen ist...)
                strpos/stripos lügt nicht. Schau dir deine Daten nochmal genau an.
                Zitat von nikosch
                Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                Kommentar

                Lädt...
                X