Umlaute umwandeln: Problem mit Var-Übergabe

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

  • Umlaute umwandeln: Problem mit Var-Übergabe

    Ich habe ein sehr seltsames Problem:

    Wenn ich - wie schon im Beitrag http://www.php-resource.de/forum/sho...d/t-12851.html erklärt - Umlaute umwandle funktioniert das nur, wenn ich den String direkt anführe.
    Übergebe ich die Variable, die ich aus der mySQL-Datenbank ausgelesen hab, gehts nicht!

    * Funktioniert nicht:
    PHP-Code:
    // Auslesen aus Datenbank mit for-Schleife
    $nachname      mysql_result($result$i"NACHNAME");
    $vorname       mysql_result($result$i"VORNAME");
    // Ergebnisse: "Höfer" und "Bernd"

    $name_mit_umlaute strtolower($nachname "." $vorname ".jpg");
       
    // Ergebnis zB: "höfer.bernd.jpg"
    $name str_replace (array("ä""ö""ü""ß"), array("ae""oe""ue""ss"), $name_mit_umlaute);
       
    // Ergebnis zB: wie oben anstatt "hoefer.bernd.jpg" 
    * Funktioniert
    PHP-Code:
    $name_mit_umlaute strtolower("Höfer.Bernd.jpg");
       
    // Ergebnis hier: "höfer.bernd.jpg"
    $name str_replace (array("ä""ö""ü""ß"), array("ae""oe""ue""ss"), $name_mit_umlaute);
       
    // Ergebnis hier: "hoefer.bernd.jpg" 
    Die Variablen sind vom Datentyp her in beiden Fällen string.

    Woran könnte das liegen? -
    Hat das mit der Codierung der Daten, die aus der db gelesen werden zu tun? Wie finde ich das heraus?

    ---
    Info zu php, apache, mySQL:
    - Development-Server:
    * Apache/2.0.54 (Win32)
    * PHP/5.0.4
    * MySQL Client API version 4.1.7
    - Server online:
    * Apache/1.3.33
    * PHP/4.3.10
    * MySQL Client API version 3.23.56
    Bei beiden tritt das Problem in identer Weise auf!
    ---
    Zuletzt geändert von pawlucha; 16.08.2005, 11:12.

  • #2
    Bitte unsere [PHP]-Tags benutzen: http://www.php-resource.de/forum/sho...threadid=50454

    Kommentar


    • #3
      Re: Umlaute umwandeln: Problem mit Var-Übergabe

      hast du vielleicht die umlaute bereits als HTML-entities kodiert in der DB stehen ...?
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Wie finde ich das heraus?

        Ich habe die Daten mittels phpMyAdmin eingegeben.

        Kommentar


        • #5
          mach doch einfach mal testausgaben

          Kommentar


          • #6
            Du könntest dir die funktionierende und die nicht funktionierende Ausgabe mal im Browser anschauen (Ansicht -> Quelltext).

            Steht da einmal ö und einmal ö dann ist das des Rätsels Lösung
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Hab ich ja!

              Wie oben beschrieben (// Ergebnis....), hab ich den String mit echo ausgegeben. Der Browser zeigt im Quelltext immer den Text - also keine html-Codes (& ouml ; etc.).

              Wien könnte ich noch die Ausgabe testen?

              Kommentar


              • #8
                Original geschrieben von pawlucha
                Wien könnte ich noch die Ausgabe testen?
                Austria wie ich gepostet habe

                Oder schreibe
                PHP-Code:
                echo '<plaintext>'
                vor alle anderen echo-Anweisungen und poste die Ausgabe, oder stell ein Beispiel online, oder oder oder

                Bei dem Beispiel schreibe als letzte zwei Zeilen aber bitte
                PHP-Code:
                echo '<hr />';
                show_source(__FILE__); 
                (vorausgesetzt, deine Datenbankzugriffsdaten stehen nicht in der Datei sondern werden übe r include oder ähnliches reingeholt)
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Die URL ist
                  - http://www.kernstock-zt.at/team.php?mitarbeiter=HOE

                  UID: test, PWD: test

                  Die Problemstelle habe ich mit "PROBLEMSTELLE" gekennzeichnet, also leicht mit Suchen zu finden....
                  Zuletzt geändert von pawlucha; 16.08.2005, 12:32.

                  Kommentar


                  • #10
                    in deinem beispiel stehen im testtext also schon entities - und die werden auch korrekt ersetzt.
                    in den daten aus der DB stehen aber keine entities - da du aber nur die entities suchst und ersetzt, findet er da nichts.

                    sag mal, kann es sein, dass du zu $%&§ bist, um mit deinem verwendeten editor umzugehen, und der beim abspeichern die umlaute in deinem code automatisch durch entities ersetzt ...?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      in deinem beispiel stehen im testtext also schon entities - und die werden auch korrekt ersetzt.
                      in den daten aus der DB stehen aber keine entities - da du aber nur die entities suchst und ersetzt, findet er da nichts.
                      Woran siehst du, dass im testtext die entities stehen?

                      Der Teil "Testtext....." ist zu Testzwecken von mir händisch eingegeben worden. Die Umwandlung funktioniert. Im Code stehen Original "öüä".

                      PHP-Code:
                      $text $nachname "." $vorname ".jpg" "__Testtext mit Uml_&auml;&ouml;&uuml;_auten direkt eingegeben"
                      Was nicht funktioniert ist die Umwandlung von $nachname und $vorname . Ist kann aber nicht erkennen, wo du herausliest, dass hier schon entities stehen - die gibts doch nur danach bei "__Testtext....."!
                      Zuletzt geändert von pawlucha; 16.08.2005, 13:31.

                      Kommentar


                      • #12
                        Original geschrieben von pawlucha
                        Woran siehst du, dass im testtext die entities stehen?
                        daran, dass ich mir die ausgabe von show_source ansehe ...?
                        (ich gehe davon aus, dass show_source da nicht selber dran herumpfuscht.)
                        Der Teil "Testtext....." ist zu Testzwecken von mir händisch eingegeben worden. Die Umwandlung funktioniert. Im Code stehen Original "öüä".
                        und was steht in dem stück, welches du selber gepostet hast ...?

                        Die Umwandlung von $nachname und $vorname funktioniert aber nicht.
                        natürlich nicht - weil du nicht nach ä suchst, sondern nach &amp;auml;

                        Ist kann aber nicht erkennen, wo du herausliest, dass hier schon entities stehen - die gibts nur danach bei "__Testtext....."!
                        nur da?

                        und was ist das dann:
                        PHP-Code:
                        // Erg&auml;nze Umlaute durch ae, oe, ue und wandle &szlig; in ss 
                        $fotodateiname str_replace (
                        array(
                        "&auml;""&ouml;""&uuml;""&szlig;"),
                        array(
                        "ae""oe""ue""ss"), $fotodateiname_mit_umlaute); 
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Original geschrieben von wahsaga
                          natürlich nicht - weil du nicht nach ä suchst, sondern nach &amp;auml;

                          nur da?

                          und was ist das dann:
                          PHP-Code:
                          // Erg&auml;nze Umlaute durch ae, oe, ue und wandle &szlig; in ss 
                          $fotodateiname str_replace (
                          array(
                          "&auml;""&ouml;""&uuml;""&szlig;"),
                          array(
                          "ae""oe""ue""ss"), $fotodateiname_mit_umlaute); 
                          [/B]
                          Interessant...

                          Ich hab nur den String mit $vorname und $nachname mittels htmlentities umgewandelt:
                          PHP-Code:
                          ö => &uml
                          Nun gehts, da entities vorhanden sind und nach entities gesucht wird.

                          Seltsam ist, dass beim mir im Code nicht
                          PHP-Code:
                          array("&auml;""&ouml;""&uuml;""&szlig;"), 
                          ...sondern
                          PHP-Code:
                          array("ä""ö""ü""ß"), 
                          ...steht.

                          Offensichtlich wandelt php "automatisch" (by default) Umlaute in entities um.... Hab ich nicht gewusst.
                          Denn: Nicht aus der mySQL-db kommt der Text mit den entities. PHP wandelt offenbar alle Umlaute im Code beim Parsen in htmlentities um....

                          Danke jedenfalls für die Hilfe! :-)

                          Kommentar


                          • #14
                            Original geschrieben von pawlucha
                            PHP wandelt offenbar alle Umlaute im Code beim Parsen in htmlentities um....
                            Falsch
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Original geschrieben von pawlucha
                              PHP wandelt offenbar alle Umlaute im Code beim Parsen in htmlentities um....
                              so ein quark ...

                              ich bleibe bei meiner vermutung, dass du einen editor benutzt, der diese sonderzeichen beim abspeichern in entities umwandelt.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X