PHP strtoupper mit Umlauten

Von in php

Wer schon ein­mal die PHP-​Funktion str­toup­per() ver­wen­det hat, ist mög­li­cher­wei­se auf ein läs­ti­ges Pro­blem mit den Umlau­ten gesto­ßen: PHP ver­wei­gert näm­lich stand­haft, Buch­sta­ben wie ö,ü oder ä in Groß­schreib­wei­se dar­zu­stel­len. Ich muss­te mich sel­ber die­sem Pro­blem wid­men, als es bei einem eng­lisch­spra­chi­gen Kun­den erst Jah­re nach Pro­jekt­ab­schluss erst­ma­lig auf­ge­tre­ten war.
Etwas ver­blüfft wur­de ich nach kur­zer Recher­che auf einen Hin­weis auf php.net auf­merk­sam, wonach das Set­zen der locale-​Umgebung dem str­toup­per auf die Sprün­ge hel­fen soll­te. Lei­der half das gar nicht wei­ter, deutsch­spra­chi­ge Son­der­zei­chen wur­den auch wei­ter­hin in Klein­schreib­wei­se ausgegeben:

setlocale(LC_CTYPE, 'de_DE.UTF8');

Abge­se­hen davon ist ein Ver­än­dern der Locale-​Informationen nicht immer erwünscht oder möglich.
Die Lösung für die­ses Pro­blem ist die Ver­wen­dung einer ande­ren Funk­ti­on. Mit mb_​strtoupper() soll­te man auf der siche­ren Sei­te sein:

mb_strtoupper('äöü', 'UTF-8');
Share on LinkedInShare on Redditshare on TumblrShare on StumbleUponDigg thisShare on FacebookGoogle+Tweet about this on TwitterEmail to someone