Chris: strtolower() mit Unicodes anwenden

Hallo ihr,

ich versuche grade, die Funktion strtolower zu nutzen, wenn auch Umlaute oder andere Unicodes im String enthalten sind.

Das Manual sagt dazu: "Beachten Sie, dass 'Buchstaben' vom Wert locale abhängig ist. Ist z. B. die Voreinstellung für locale "C", werden Sonderzeichen wie Umlaute (ä, ö, ü) nicht umgewandelt."

Wo finde ich diese Voreinstellung für locale? Kann man strtolower() überhaupt sinnvoll nutzen, wenn man weiß, dass die String auch Umlaute enthalten?

Grüße
Chris

  1. Hallo,

    Das Manual sagt dazu: "Beachten Sie, dass 'Buchstaben' vom Wert locale abhängig ist.

    Dann probier doch mal...

    $locale = array('de', 'de_DE@euro', 'deu');  
    setlocale(LC_ALL, $locale);  
    echo strtolower('Mäh!');  
    
    

    Alex

    1. Hallo,

      Dann probier doch mal...

      $locale = array('de', 'de_DE@euro', 'deu');

      setlocale(LC_ALL, $locale);
      echo strtolower('Mäh!');

        
      m�h!  
        
      Das ist die Ausgabe... funktioniert also auch nicht. Kann man den Wert locale eigentlich in der php.ini oder im Apache fest einstellen, oder macht das keinen Sinn?  
        
      Gruß  
      Chris
      
      1. Hallo Chris,

        m�h!

        Also bei mir geht's (übrigens auch ohne setlocale). Hast Du das Skript vielleicht in einem anderen Zeichensatz abgespeichert, als es von PHP ausgegeben wird?

        Alex

        1. Moin!

          m�h!

          Also bei mir geht's (übrigens auch ohne setlocale). Hast Du das Skript vielleicht in einem anderen Zeichensatz abgespeichert, als es von PHP ausgegeben wird?

          Ich halte es ja nicht für sehr sinnvoll, einen Testcase zu konstruieren, in dem der einzige Umlaut nicht verändert werden muß. Mindestens sollte auch ein großer Umlaut kleingemacht werden.

          Allerdings ist diese Locale-Einstellungskiste ein ziemlich übler Mist. Grundsätzlich sollte man bei PHP davon ausgehen, dass alle klassischen Stringfunktionen nur mit ISO-8859-1 zurechtkommen, und dass alle Formen von Multibyte-Strings (wie z.B. UTF-8) immer die mb_*-Stringfunktionen erfordern.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
      2. Hi,

        echo strtolower('Mäh!');

        m?h!
        Das ist die Ausgabe...

        das sieht aber danach aus, als wäre der Quellcode z.B. in ISO-8859-x gespeichert, und dein Server behauptet nun, es sei UTF-8. Dann wäre das in ISO codierte ä ein ungültiger UTF-8-Code, den der Browser mangels besserem Verständnis als Fragezeichen darstellt.

        So long,
         Martin

        --
        Dieser Satz wurde in mühsamer Kleinstarbeit aus einzelnen Wörtern zusammengesetzt.
          (Hopsel)