Funktion strtolower() - Zeichen eines Strings in Kleinbuchstaben umwandeln

In PHP-Programmen müssen Zeichenketten häufig in Kleinbuchstaben umgewandelt werden. Das kann z.B. notwendig sein, wenn man die Wörter in Zeichenketten in einer einheitlichen Form in der Datenbank speichern möchte und daher alles in Kleinbuchstaben umwandeln muss. Es könnte auch der Fall eintreten, dass wenn ein Benutzer ein Suchbegriff eingibt und die Suche startet, die relevanten Inhalte in der Datenbank unabhängig von der Groß- und Kleinschreibung gefunden werden sollen. In solchen Fällen kann es nützlich sein, bei der internen Programmverarbeitung alles in Kleinbuchstaben zu gestalten, unabhängig davon, wie die Texte dem Benutzer im Browser angezeigt werden. Für solche Aufgaben kann man in PHP die Funktion strtolower() verwenden. Die Parameter werden dabei wie folgt angegeben.

  1. Die Zeichenkette, die in Kleinbuchstaben umgewandelt werden soll (string).

Beim folgenden Beispiel werden die Zeichen AaBbCc in aabbcc umgewandelt und ausgegeben.

<?php

$str = 'AaBbCc';

// Ausgabe aabbcc
echo strtolower($str);

?>

Die Funktion ist vom Gebietsschema abhängig (setlocale). So kann es passieren, dass die Umlaute in Großbuchstaben nicht zu den Kleinbuchstaben zugeordnet werden. Beim folgenden Beispiel wird am Bildschirm ÄäÖöÜü ausgegeben.

<?php

$str = 'ÄäÖöÜü';

// Ausgabe ÄäÖöÜü
echo strtolower($str);

?>

Die Umlaute in Großbuchstaben wurden nicht in Kleinbuchstaben umgewandelt. In solchen Fällen sollte man auf die Multibyte-Funktion mb_strtolower() setzen. Damit ist es auch möglich, die Zeichenkodierung als zweiten Parameter mit anzugeben und die Zuordnung von Klein- zu Großbuchstaben sollte korrekt erfolgen.

<?php

$str = 'ÄäÖöÜü';

// Ausgabe ääööüü
echo mb_strtolower($str, 'UTF-8');

?>

Die Multibyte-Funktion mb_strtolower() ist nur verfügbar, wenn auf dem Server die Multibyte-Erweiterung mbstring aktiviert ist. Ob das der Fall ist, kann man mit der Funktion phpinfo() ermitteln. Falls mbstring nicht zur Verfügung steht, kann man eine eigene Funktion für die Umwandlung schreiben. Beim folgenden Beispiel sorgt die Funktion strtolower_utf8() dafür, dass auch die Umlaute Ä, Ö und Ü umgewandelt werden.

<?php

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

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

$str = 'ABCÄäÖöÜü';

// Ausgabe abcääööüü
echo strtolower_utf8($str);

?>

Die Funktion strtolower_utf8() kann natürlich um weitere Zeichen erweitert werden. Innerhalb der Funktion sorgt str_replace() dafür, dass die Zeichen im Array $from auf die Zeichen in $to umgewandelt werden, womit man die Umlaute abdeckt. Damit auch die restlichen Zeichen des Alphabets umgewandelt werden, erfolgt außerdem die zusätzlich Umwandlung der gesamten Zeichenkette mit strtolower() und das Ergebnis ist der Rückgabewert der Funktion.