1. Kleinschreibung per strtolower()
Um alle Zeichen in einem String in Kleinbuchstaben umzuwandeln kann strtolower($string) verwendet werden.
PHP-Code
<?php $str = 'abcABC'; var_dump($str); var_dump(strtolower($str)); ?>
Ausgabe
string(6) "abcABC" string(6) "abcabc"
2. Großschreibung per strtoupper()
Für den Fall, dass Zeichen eines Strings in Großbuchstaben umgewandelt werden sollen, gibt es strtoupper($string).
PHP-Code
<?php $str = 'abcABC'; var_dump($str); var_dump(strtoupper($str)); ?>
Ausgabe
string(6) "abcABC" string(6) "ABCABC"
3. In Kleinbuchstaben umwandeln bei UTF-8
Soll ein String in Kleinbuchstaben umgewandelt werden, der in UTF-8 kodiert ist, muss mb_strtolower($string, $encoding) verwendet werden, wobei $encoding "UTF-8" ist.
PHP-Code
<?php $str = 'abcABCαβγΩ'; var_dump(strtolower($str)); var_dump(mb_strtolower($str, 'UTF-8')); ?>
Ausgabe
string(14) "abcabc����" string(14) "abcabcαβγω"
4. In Großbuchstaben umwandeln bei UTF-8
Analog zum vorherigen Beispiel (Konvertierung in Kleinschreibung) gilt für die Umwandlung in Großbuchstaben bei UTF-8, dass mb_strtouppper($string, $encoding) verwendet werden sollte. $encoding muss wieder den Wert "UTF-8" haben.
PHP-Code
<?php $str = 'abcABCαβγΩ'; var_dump(strtoupper($str)); var_dump(mb_strtoupper($str, 'UTF-8')); ?>
Ausgabe
string(14) "ABCABCαβγΩ" string(14) "ABCABCΑΒΓΩ"
5. Performance von mb_strtoupper()/mb_strtolower()
mb_strtoupper() und mb_strtolower() können beide auch auf Strings angewendet werden, die nicht in UTF-8 kodiert sind.
Ihr Nachteil ist allerdings, dass sie weit langsamer als strtoupper() bzw. strtolower() sind.
Wo immer möglich sollte man daher strtoupper() oder strtolower() verwenden.
PHP-Code
<?php // Festlegen des internen Zeichensatzes für die mb-Funktion auf UTF-8, // sodass dieser nicht mehr jedes Mal übergeben werden muss mb_internal_encoding('UTF-8'); $str = 'abcDeFGHijkklmOpQrstUvwyz1234567890'; // strtolower $startLower = microtime(true); for ($x=0; $x<1000000; $x++) { strtolower($str); } $endLower = microtime(true); // strtoupper $startUpper = microtime(true); for ($x=0; $x<1000000; $x++) { strtoupper($str); } $endUpper = microtime(true); // mb_strtolower $startLowerMb = microtime(true); for ($x=0; $x<1000000; $x++) { mb_strtolower($str); } $endLowerMb = microtime(true); // mb_strtoupper $startUpperMb = microtime(true); for ($x=0; $x<1000000; $x++) { mb_strtoupper($str); } $endUpperMb = microtime(true); $timeLower = number_format(($endLower - $startLower), 4); $timeUpper = number_format(($endUpper - $startUpper), 4); $timeLowerMb = number_format(($endLowerMb - $startLowerMb), 4); $timeUpperMb = number_format(($endUpperMb - $startUpperMb), 4); echo('strtolower(): ' . $timeLower . 's'."\n"); echo('strtoupper(): ' . $timeUpper . 's'."\n"); echo('mb_strtolower(): ' . $timeLowerMb . 's'."\n"); echo('mb_strtoupper(): ' . $timeUpperMb . 's'); ?>
Ausgabe
strtolower(): 1.3102s strtoupper(): 1.3127s mb_strtolower(): 19.3046s mb_strtoupper(): 21.5466s