Funktion strtoupper() - Strings in Großbuchstaben umwandeln

In PHP-Anwendungen muss hin und wieder eine Umwandlung von Strings von Klein- zu Großbuchstaben erfolgen. Das kann z.B. der Fall sein, wenn man Städtenamen vom übrigen Text deutlich unterscheidbar darstellen möchte und diese daher in Großbuchstaben angezeigt werden sollen. Es kann auch sein, dass in einer Anwendung die Suchbegriffe in einem einheitlichen Format in der der Datenbank gespeichert werden sollen und daher vor dem Speichern eine Umwandlung zu Großbuchstaben erfolgen soll. Hierfür kann man die Funktion strtoupper() verwenden. Als Parameter wird der folgende Wert übergeben.

  1. Die Zeichenkette, die in Großbuchstaben umgewandelt werden soll (string).

Beim folgenden Beispiel wird aus abcdefg der String ABCDEFG.

<?php

$str = 'abcdefg';

// Ausgabe ABCDEFG
echo strtoupper($str);

?>

Welche Kleinbuchstaben zu den Großbuchstaben zugeordnet werden, ist vom Gebietsschema (setlocale) abhängig. Das kann insbesondere in der Zeichenkodierung UTF-8 dazu führen, dass diese nicht richtig zugeordnet werden. Im folgenden Beispiel werden die Umlaute nicht in Großbuchstaben umgewandelt.

<?php

$str = 'äöü';

// Ausgabe äöü
echo strtoupper($str);

?>

In dem Fall hat man grundsätzlich zwei Möglichkeiten. Entweder man schreibt eine eigene Funktion, damit z.B. auch die Umlaute umgewandelt werden oder man verwendet die Multibyte-Funktion mb_strtoupper(). Beim folgenden Beispiel sorgt die selbst geschriebene Funktion strtoupper_utf8() dafür, dass auch die Umlaute umgewandelt werden.

<?php

function strtoupper_utf8($str){ 
  $from = array('ä','ö','ü'); 
  $to = array('Ä','Ö','Ü');  

  return strtoupper(str_replace($from, $to, $str)); 
} 

$str = 'abcdäöü';

// Ausgabe ABCDÄÖÜ
echo strtoupper_utf8($str);

?>

Innerhalb der Funktion strtoupper_utf() wird mit der Funktion str_replace() dafür gesorgt, dass die Zeichen im Array $from auf die Zeichen in $to umgewandelt werden. Die Arrays können um weitere Zeichen erweitert werden, z.B. mit ausländischen Zeichen. Um auch die übrigen Zeichen des Alphabets umzuwandeln, wird außerdem auf den gesamten String strtoupper() angewendet und das Ergebnis des gesamten Vorgangs ist der Rückgabewert der Funktion.

Daneben ist es auch möglich, die Multibyte-Funktion mb_strtoupper() zu verwenden. Damit ist es möglich, als zweiten Parameter die Zeichenkodierung anzugeben und die Umwandlung von Umlauten sollte ordnungsgemäß erfolgen.

<?php

$str = 'abcdäöü';

// Ausgabe ABCDÄÖÜ
echo mb_strtoupper($str, 'UTF-8');

?>

Die Entscheidung, ob man eine eigene Funktion schreibt oder auf mb_strtoupper() setzt, hängt häufig von der Performance ab. Da mb_strtoupper() in der Regel langsamer als eine selbst geschriebene Funktion ist, setzen viele Programmierer auf eine eigene Funktion. Außerdem kann es vorkommen, dass mb_strtoupper() nicht verwendet werden kann, da hierfür die Verfügbarkeit von mbstring auf dem Server vorausgesetzt wird und das ist nicht immer der Fall.