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.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    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
      The string "()()" is not palindrom but the String "())(" is.

      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...
            The string "()()" is not palindrom but the String "())(" is.

            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.
                [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                Kommentar

                Lädt...
                X