xpfreund: Zählproblem - strlen

Hallo,

"Service Kanalbrücke" besteht aus 19 Zeichen (ohne Anführungszeichen aber mit Leerzeichen). Wenn ich mit strlen danach frage, bekomme ich 16 raus.
Was muss ich PHP beibringen, damit der komplett 19 rauskriegt?
Es geht darum, nach bestimmten Bedingungen an den Anfang des Strings mehrere Leerzeichen anzufügen, was ich mit str_pad(left) mache.
Dafür brauche ich aber die ganze Länge. Oder gibts noch ne andere Funktion, die das hinkriegt?

gruß aus Senftenberg am See

  1. n'abend,

    "Service Kanalbrücke" besteht aus 19 Zeichen (ohne Anführungszeichen aber mit Leerzeichen). Wenn ich mit strlen danach frage, bekomme ich 16 raus.

    streln() gibt dir die Anzahl Bytes aus. Bei einem Multibyte Character-Set - wie du ihn hier offenbar einsetzt - passt das dann natürlich nicht mehr.

    Was muss ich PHP beibringen, damit der komplett 19 rauskriegt?

    Vielleich ist Multibyte String dein Freund?

    weiterhin schönen abend...

    --
    #selfhtml hat ein Forum?
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. Vielleich ist Multibyte String dein Freund?

      Du solltest deinen Freundeskreis mal um Toleranz erweitern und mich auf deiner Page nicht mit irgendwelchen neuinmalklugen Sprüchen zum beschissenen IE nerven.

      1. n'abend,

        Du solltest deinen Freundeskreis mal um Toleranz erweitern und mich auf deiner Page nicht mit irgendwelchen neuinmalklugen Sprüchen zum beschissenen IE nerven.

        Wenn ich dein Stück Ignoranz in Toleranz konvertieren könnte, würden du Internet Explorer Benutzer und ich Firefox Benutzer wahrscheinlich dicke Freunde werden. Da ich intolerantes Arschloch aber wirklich die Nase voll vom Internet Explorer und seinen Unzulänglichkeiten habe und du deinen Internet Explorer offenbar heiß und innig liebst, wird es kaum zu einer solchen Freundschaft kommen. So wie du dich ab meiner Missionierung gestört fühlst, fühle ich mich von Leuten wie dir gestört. Wegen euch Internet Explorer Anhängern muss *ich* etliche Stunden mehr investieren, um meine Webseiten kaputt genug zu bekommen, damit auch der Internet Explorer damit etwas anfangen kann.

        Da wir hier auf verhärtete Fronten stoßen und es diese Diskussionen wahrlich oft genug gab, bin ich der Ansicht, dass wir unsere differenten Ansichten bezüglich unserer favorisierten Browser zu Grabe tragen können, uns gegenseitig ignorieren können und beide unserer getrennten Browser-Wege gehen dürfen.

        Diese "Diskussion" ist für mich hiermit beendet. Ich bitte darum diesen Schwachsinn nicht zu einem weiteren Browser-FlameWar ausarten zu lassen - das ist es (mir) nämlich wahrlich nicht wert.

        weiterhin schönen abend...

        --
        #selfhtml hat ein Forum?
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
        1. Hallo globe!

          Wegen euch Internet Explorer Anhängern muss *ich* etliche Stunden mehr investieren, um meine Webseiten kaputt genug zu bekommen, damit auch der Internet Explorer damit etwas anfangen kann.

          Na und? Berechne die Zeit und verdiene mehr! Du bist wirklich zu bedauern ;)

          Darfst weiterhin Don Quichotte auf Deiner Startseite spielen...

          Viele Grüße aus Frankfurt/Main,
          Patrick

          --

          _ - jenseits vom delirium - _
          [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
          Nichts ist unmöglich? Doch!
          Heute schon gegökt?
          1. Ave Patrick!

            Na und? Berechne die Zeit und verdiene mehr! Du bist wirklich zu bedauern ;)

            Darfst weiterhin Don Quichotte auf Deiner Startseite spielen...

            Ich hab meine Globale IE Endlösung gefunden.

            Flexible Seiten werden für den IE zu feste breite Seiten[1]. :)

            Grüße aus H im R an Patrick,
              Primus Enginus*
            [1] Nach Lust, Laune und Gemüht 900 - 1300px

            1. Ave Enginus!

              Flexible Seiten werden für den IE zu feste breite Seiten[1]. :)

              Schön und gut, aber was hat das Windmühlen zu tun? ;)

              Viele Grüße aus Frankfurt/Main,
              Patrick

              --

              _ - jenseits vom delirium - _
              [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
              Nichts ist unmöglich? Doch!
              Heute schon gegökt?
              1. Ave Patrick!

                Flexible Seiten werden für den IE zu feste breite Seiten[1]. :)
                Schön und gut, aber was hat das Windmühlen zu tun? ;)

                Nichts, ich wollt das nur mal los werden. :)

                Grüße aus H im R an Patrick,
                  Primus Enginus*

                1. Hello,

                  Flexible Seiten werden für den IE zu feste breite Seiten[1]. :)
                  Schön und gut, aber was hat das Windmühlen zu tun? ;)

                  Nichts, ich wollt das nur mal los werden. :)

                  Ja, nee. Is schon klar...
                  Schön dass wir drüber gesprochen haben.

                  Ein harzliches Glückauf

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Ave Tom!

                    Ja, nee. Is schon klar...
                    Schön dass wir drüber gesprochen haben.

                    Find ich auch.
                    Was aber noch schöner ist, hab heute den Bug gefunden, der den IE dran hinderte, flexibel zu sein. :))

                    Der IE ist echt selten Dämlich, 2 Div Containern musste ich ein height: 1%; geben und fertig[1].

                    Grüße aus H im R an Tom,
                      Primus Enginus*
                    [1] Und ich hatte mich auf eine lange Nacht der Bugsuche/Problembehandlung eingestellt[2] :)
                    [2] so schnell kann´s gehen

                    1. Hello,

                      Der IE ist echt selten Dämlich, 2 Div Containern musste ich ein height: 1%; geben und fertig[1].

                      [1] Und ich hatte mich auf eine lange Nacht der Bugsuche/Problembehandlung eingestellt[2] :)

                      Tja, lesen bildet eben doch mehr als fernsehen.

                      Ein harzliches Glückauf

                      Tom vom Berg

                      --
                      Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de
        2. Wenn ich dein Stück Ignoranz in Toleranz konvertieren könnte, würden du Internet Explorer Benutzer und ich Firefox Benutzer wahrscheinlich dicke Freunde werden.

          Ich bin nicht auf der Suche nach neien Freunden.

          Da ich intolerantes Arschloch aber wirklich die Nase voll vom Internet Explorer und seinen Unzulänglichkeiten habe und du deinen Internet Explorer offenbar heiß und innig liebst, wird es kaum zu einer solchen Freundschaft kommen.

          Mann, komm raus aus deiner schönen heilen Welt. Da draußen gibt`s genug Anwender, die den IE benutzen müssen, weil sie nix anderes verwenden können.

          Wegen euch Internet Explorer Anhängern muss *ich* etliche Stunden mehr investieren, um meine Webseiten kaputt genug zu bekommen, damit auch der Internet Explorer damit etwas anfangen kann.

          Wenn dir das zu viel ist, dann überlaß die Webentwicklung denen, die damit ihre Brötchen verdienen müssen. Die brauchen auch nicht etliche Stunden...

          Diese "Diskussion" ist für mich hiermit beendet. Ich bitte darum diesen Schwachsinn nicht zu einem weiteren Browser-FlameWar ausarten zu lassen - das ist es (mir) nämlich wahrlich nicht wert.

          Ich habe mit keiner Silbe einen Flame begonnen, es ging nur um diesen kindischen Layer auf deiner Seite. Der kommt bei mir nämlich so an, als wäre ich ein Blinder, dem du die Vorzüge einer 3D-Brille vorführen willst. Ich sitze hier in einem Firmennetz, wo der IE Standard ist. Ob ich das gut finde oder nicht, ist scheißegal, ich muß ihn benutzen. Und bei all dem täglichen Grauen kommst du mir auch noch mit so einem Layer. Nee, du, das ist keine Art, mit seinen unbekannten Besuchern umzugehen.

        3. lol, ich habe schon viel Kritik wegen dem IE gehört, aber

          Wegen euch Internet Explorer Anhängern muss *ich* etliche Stunden mehr investieren, um meine Webseiten kaputt genug zu bekommen, damit auch der Internet Explorer damit etwas anfangen kann.

          so eine bescheuerte noch nie;-))))))))))))

          Hört sich an wie: Ich bin ein Nachtmensch und nur weil so viele Menschen tagsüber aktiv sind muss ich nun etliche Stunden am Tag verbringen und mir so meine Traumphasen versauen lassen.

          Ich weiss nicht was du so zu dir nimmst, aber nimm weniger;-)

          Pia

          1. Ach noch was,
            http://rodneyrehm.de/personal/

            Jemand mit so einem Quelltext sollte sich nicht als NONPLUSULTRA in Sachen Webseitenerstellung aufspielen. Mach den Code vernünftig, dann klappts vielleicht auch mit dem IE;-)

            Pia

      2. Hello,

        Du solltest deinen Freundeskreis mal um Toleranz erweitern und mich auf deiner Page nicht mit irgendwelchen neuinmalklugen Sprüchen zum beschissenen IE nerven.

        Ist ein sehr gewagtes Experiement, was unser Mitposter da betreibt.

        Eine Software als solche kann zwar nicht beleidigt werden; als Entwickler oder Vertreiber wäre ich aber beliedigt, wenn man meine Software als "ranzig" bezeichnen würde.
        Das würde ich aus dem allgemeinen Sprachgfebrauch heraus als Beleidigung und Geschäftsschädigung empfinden.

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    2. Hallo,

      n'abend,

      "Service Kanalbrücke" besteht aus 19 Zeichen (ohne Anführungszeichen aber mit Leerzeichen). Wenn ich mit strlen danach frage, bekomme ich 16 raus.

      Was muss ich PHP beibringen, damit der komplett 19 rauskriegt?

      Vielleich ist Multibyte String dein Freund?

      sieht zwar bekloppt aus, aber na ja.
      mb_strlen('Service Kanalbrücke','8bit')
      Was solls?
      Aber trotzdem danke!

      gruß aus Senftenberg am See

  2. echo $begrüßung;

    "Service Kanalbrücke" besteht aus 19 Zeichen (ohne Anführungszeichen aber mit Leerzeichen). Wenn ich mit strlen danach frage, bekomme ich 16 raus.

    Wie machst du das? Ich komme bei UTF-8-kodiertem Text auf 20 und mit ISO-8859-1 auf 19. So wie es mit der derzeitigem PHP-Stringimplementation üblich ist.

    Gib am besten den String mal mit

    echo chunk_split(bin2hex($string), 2, ' ');

    aus, damit man die Bytewerte sehen kann.

    Was muss ich PHP beibringen, damit der komplett 19 rauskriegt?

    Das kommt darauf an was du falsch machst.

    echo "$verabschiedung $name";

    1. Hallo,

      Gib am besten den String mal mit

      echo chunk_split(bin2hex($string), 2, ' ');

      aus, damit man die Bytewerte sehen kann.

      Mit dem mb_strlen funktionierts aber auch.

      gruß aus Senftenberg am See

      1. echo $begrüßung;

        Mit dem mb_strlen funktionierts aber auch.

        Unabhängig davon würde ich dich bitten, genau zu zeigen, wie du bei einem String der eigentlich Länge 19 oder 20 haben müsstest auf 16 kommst. Dass du mit mb_strlen() bereits erfolgreich warst habe ich gelesen, nur die eigentliche Ursache bleibt im Dunkeln. Also:

        Gib am besten den String mal mit
          echo chunk_split(bin2hex($string), 2, ' ');
        aus, damit man die Bytewerte sehen kann.

        echo "$verabschiedung $name";

        1. Hallo,

          String="Service Kanalbrücke"
          Bytewerte: 53 65 72 76 69 63 65 20 4b 61 6e 61 6c 62 72 fc 63 6b 65
          mit strlen: 16
          mb_strlen: 19

          gruß aus Senftenberg am See

          1. echo $begrüßung;

            String="Service Kanalbrücke"
            Bytewerte: 53 65 72 76 69 63 65 20 4b 61 6e 61 6c 62 72 fc 63 6b 65

            OK. Das sieht nach ISO-8859-1, Win-1252 oder Latin1 aus. Nichts ungewöhnliches also.

            mit strlen: 16
            mb_strlen: 19

            Aber diese 16 ist mit den derzeit von dir zur Verfügung gestellten Informationen nicht nachvollziehbar. Da liegt irgendein anderes Problem vor, dünkt mir.

            echo "$verabschiedung $name";

            1. Hallo,

              Aber diese 16 ist mit den derzeit von dir zur Verfügung gestellten Informationen nicht nachvollziehbar. Da liegt irgendein anderes Problem vor, dünkt mir.

              keine Ahnung mit "ZAB Förderung" war das genau dasselbe (3 Zeichen weniger als Original und mit mb_strlen). Hängt wohl mit den Umlauten zusammen.

              gruß aus Senftenberg am See

              1. echo $begrüßung;

                Aber diese 16 ist mit den derzeit von dir zur Verfügung gestellten Informationen nicht nachvollziehbar. Da liegt irgendein anderes Problem vor, dünkt mir.
                keine Ahnung mit "ZAB Förderung" war das genau dasselbe (3 Zeichen weniger als Original und mit mb_strlen). Hängt wohl mit den Umlauten zusammen.

                Ich vermute ja den Fehler irgendwo anders. Kannst du mal folgendes probieren:

                <pre>  
                <?php  
                $s = 'ärger';  
                // Ausgabe 5 oder 6, je nachdem, welche Kodierung der Editor verwendet  
                echo strlen($s), "\n";  
                // welche Byte-Werte hat der verwendet?  
                // sollte e4 oder c3 a4 gefolgt von 72 67 65 72 ergeben  
                echo chunk_split(bin2hex($s), 2, ' '), "\n";  
                // explizit mit ISO-8859-1 kodiertes ä; sollte 5 ergeben  
                echo strlen("\xe4rger"), "\n";  
                // explizit mit UTF-8 kodiertes ä; sollte 6 ergeben  
                echo strlen("\xc3\xa4rger"), "\n";
                

                Bekommst du andere Ergebnisse angezeigt als in den Kommentaren erwähnt?

                echo "$verabschiedung $name";

                1. Hallo,

                  Bekommst du andere Ergebnisse angezeigt als in den Kommentaren erwähnt?

                  also aufm lokalen Server mit PHP 5. ... bekomme ich die gleichen Ergebnisse, wenn ich aber das Ganze aufn Server (mit PHP 4.2 oder so ähnlich) lege (Mail-Server hier auf Arbeit), dann kommt das hier:

                  1: 16
                  2.: 3
                  3: e4 72 67 65 72
                  4: 3
                  5: 5

                  1 steht übrigens für "Service Kanalbrücke" mit strlen (auf lokal 19), der Rest ist geblieben.

                  gruß aus Senftenberg am See

                  1. echo $begrüßung;

                    also aufm lokalen Server mit PHP 5. ... bekomme ich die gleichen Ergebnisse, wenn ich aber das Ganze aufn Server (mit PHP 4.2 oder so ähnlich) lege (Mail-Server hier auf Arbeit), dann kommt das hier:

                    Gut, es könnte sich also um ein Problem in der alten PHP-Version handeln. Da es da zum einen Version 4.4.irgendwas gibt, und die 4er Reihe sowieso abgekündigt ist, lohnt sich keine weitere Nachforschung.

                    echo "$verabschiedung $name";

                    1. Hallo,

                      Gut, es könnte sich also um ein Problem in der alten PHP-Version handeln. Da es da zum einen Version 4.4.irgendwas gibt, und die 4er Reihe sowieso abgekündigt ist, lohnt sich keine weitere Nachforschung.

                      neuere Version lohnt nicht, da dort Sachen drauf sind, die unter PHP5 nicht mehr laufen würden (hpts. wegen mysql). und bis erstma alles umgeschrieben ist...

                      gruß aus Senftenberg am See