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