utf8 Format und strtolower Funcion

utf8 Format und strtolower Funcion

am 30.07.2006 11:22:22 von Marcel Polty

Hallo,

ich möchte ein Website in mehreren Sprachen erstellen.
Bei einigen Worten, die aus einer MySQL Datenbank kommen, muss ich die
strtolower Funktion anwenden. Die Datenbankabfrage erfolgt per utf8
und die seiten sind entsprechend kodiert.
Nach der Datenbankabfrage sind die Umlaute noch erhalten aber nach der
Anwendung von strtolower sind die Umlaute weg.

Beispiel:
echo $a; = Bäume
$a = strtolower($a);
echo $a; = b?ume

Die Frage ist, wie bringe ich strtolower dazu internationale Zeichen
korrekt umzusetzen.
Oder gibt es eine andere Funktion die das kann?

Vielen Dank

Gruß Marcel

Re: utf8 Format und strtolower Funcion

am 30.07.2006 13:04:58 von Ulf Kadner

Marcel Polty wrote:

> ich möchte ein Website in mehreren Sprachen erstellen.
> Bei einigen Worten, die aus einer MySQL Datenbank kommen, muss ich die
> strtolower Funktion anwenden. Die Datenbankabfrage erfolgt per utf8
> und die seiten sind entsprechend kodiert.
> Nach der Datenbankabfrage sind die Umlaute noch erhalten aber nach der
> Anwendung von strtolower sind die Umlaute weg.
>
> Beispiel:
> echo $a; = Bäume
> $a = strtolower($a);
> echo $a; = b?ume

da must Du auf mb_ funktionen zurueck greifen (wenn Extension nutzbar ist)

header("Content-type: text/html; charset=UTF-8");
$a = 'äöüÄÖÜß';
echo $a,"
\n";
$a = mb_strtolower($a,'utf-8');
echo $a;

MfG, Ulf

Re: utf8 Format und strtolower Funcion

am 30.07.2006 13:55:07 von Marcel Polty

Hallo Ulf,

vielen Dank für den Tipp!

Ulf Kadner schrieb:

>$a = mb_strtolower($a,'utf-8');

Super damit geht es!

Ich hatte nämlich gerade experimentiert und wollte hier bescheid sagen
das ich es hinbekommen habe.
Und zwar damit:
$a = utf8_encode(strtolower(utf8_decode($a)));

Aber die Lösung von Dir ist natürlich eleganter.

Nochmals besten Dank

Gruß Marcel

Re: utf8 Format und strtolower Funcion

am 31.07.2006 10:03:31 von Christian Schmelzer

Marcel Polty wrote:
> Hallo Ulf,
>
> vielen Dank für den Tipp!
>
> Ulf Kadner schrieb:
>
>> $a = mb_strtolower($a,'utf-8');
>
> Super damit geht es!
>
> Ich hatte nämlich gerade experimentiert und wollte hier bescheid sagen
> das ich es hinbekommen habe.
> Und zwar damit:
> $a = utf8_encode(strtolower(utf8_decode($a)));
>

Hallo,
wobei diese Lösung natürlich nur funktioniert, wenn du nur ISO-8859-1
Zeichen verwendest und damit UTF-8 ja gar nicht brauchst. Nutzt du weitere
Zeichen aus dem UTF-8 Bereich, ist der String anschließend im Eimer.

Christian

Re: utf8 Format und strtolower Funcion

am 31.07.2006 11:27:07 von Marcel Polty

Hallo Christian,

"Christian Schmelzer" schrieb:
>Hallo,
>wobei diese Lösung natürlich nur funktioniert, wenn du nur ISO-8859-1
>Zeichen verwendest und damit UTF-8 ja gar nicht brauchst. Nutzt du weitere
>Zeichen aus dem UTF-8 Bereich, ist der String anschließend im Eimer.
>
>Christian

Danke für den Hinweis, aber ich habe ja ohnehin die Lösung von Ulf
genommen ($a = mb_strtolower($a,'utf-8');)
Und dadurch überhaupt erst die mb_* Funktionen kennen gelernt. (Ich
hatte vorher noch nichts mit den internationalen Zeichen zu tun.)

Marcel