trim() wird ignoriert

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

  • trim() wird ignoriert

    Ich habe ein Problem welches ich nicht in der Lage bin allein zu lösen.

    Ich habe ein Script welches aus einer Datenbank einen Eintrag zieht.

    Deutschland - Hessen

    Diesen Wert zerlege ich mit explode() und gebe den Rest des Strings nach dem Zeichen - aus, jedoch entferne ich vorher die Leerzeichen mit trim().

    PHP-Code:
    $land_region_out explode("-",$edit_region);
    $land_region_out[1] = trim($land_region_out[1]);
    echo 
    $land_region_out[1]; 

    Die Ausgabe ist "Hessen" (Anführungszeichen nur zur Verdeutlichung)

    Soweit so gut nun das Problem:

    Ich habe auf meiner Testumgebung PHP 4.4.0 laufen. Dort funktioniert mein Script einwandfrei.
    Schiebe ich das Script auf den Webserver wo PHP 4.3.0 läuft, wird das trim() offensichtlich ignoriert denn die Ausgabe lautet " Hessen".

    Ich habe die Stringlänge noch mit strlen() gegengeprüft. Meine Vermutung lag richtig auf meinem Server werden 6 Zeichen gezählt auf dem InetServer 7.

    Ich bin mit meinem Latein und den Nerven am Ende. Ich brauche das Ergebnis um eine Weitere Abfrage zu Prüfen.

    Hat jemand nen Lösungsansatz für mich?

  • #2
    Probier es doch mal mit ltrim()
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      das ltrim() bringt auch nicht das gewünschte Ergebnis.

      Kommentar


      • #4
        Kommt eine Fehlermeldung, wenn du error_reporting rein schmeisst?
        mfg - sagg

        Kommentar


        • #5
          Re: trim() wird ignoriert

          Dann würde ich mir von diesem " Hessen" mal vom ersten Zeichen den Hex-Code anschauen - vielleicht ist das kein "normales" Leerzeichen, sondern irgendetwas anderes (bei der Übertragung was falsch eingestellt oder sonstwie schief gegangen), auf das trim() micht reagiert.
          PHP-Code:
          echo dechex(ord($dein_string)); 
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Das was bei dieser abfrage bei rauskommt ist auf dem InetServer Hx = a0 -> Char = ? -> Dez = 160
            Auf meinem Server ist es richtig das N

            Gut jetzt weiß ich das es ein unbekanntes Zeichen Gibt. Aber weiter weiß ich trotzdem noch nicht dafür reicht mein PHP-Wissen nicht.

            Die Frage die sich mir gerade stellt ist, ob es eine elegantere Lösung gibt einen String so aufzuteilen das ich nur den Hinteren Teil bekomme.

            Mal ein Bespiel was sonst noch in der DB steht an dieser stelle:

            Deutschland - Nordrhein Westfalen
            Deutschland - Baden Wuerttemberg
            Schweiz - Luzern
            usw

            Ich habe es extra schon so gemacht das ich den Trenner "-" habe.

            Kommentar


            • #7
              Original geschrieben von andreasV
              Das was bei dieser abfrage bei rauskommt ist auf dem InetServer Hx = a0 -> Char = ? -> Dez = 160
              Also ein geschütztes Leerzeichen.
              Auf meinem Server ist es richtig das N
              Hä - wieso N ...?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Sorry ich vergass zu sagen das ich es mit Deutschland - Nordrhein Westfalen getestet habe. Deswegen war das N richtig.
                das ist das 1 Zeichen im Nordrhein.... String

                Was fange ich nun mit dem Geschützen Leerzeichen an?
                Wie bekomme ich das weg bzw warum is das da? Die Daten sind nämlich auf beiden Servern die gleichen.

                Kommentar


                • #9
                  Original geschrieben von andreasV
                  Wie bekomme ich das weg bzw warum is das da?
                  Wie schon gesagt, entweder Übertragungsfehler - oder trim() reagiert vielleicht auf unterschiedlichen System auch anders.

                  Wenn es immer nur diese geschützten Leerzeichen sind, die zusätzlich zu normalen auftauchen können - dann hilft es sicher schon, trim() einen passenden zweiten Parameter zu übergeben.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Danke das mit dem 2 Parameter hat gepasst.

                    Die Lösung sieht wie folgt aus:

                    PHP-Code:
                    echo trim($bla "\\xa0"); 
                    Nun wird das Zeichen a0 am Anfang und Ende gelöscht sofern am Ende auch eins steht.

                    Noch ein Beispiel:

                    PHP-Code:
                    $bla "Test String";
                    echo 
                    trim($bla"\\x54..\\x68"); 
                    würde man das Ergebnis "st Strin" erhalten.

                    Danke für eure Hilfe.

                    Hier noch ne Seite mit den geläufgen ASCII Zeichen die ich bei der Lösungssuche gefunden habe

                    Kommentar

                    Lädt...
                    X