String in Groß-/Kleinbuchstaben umwandeln
Wie alle Zeichen in einem String in Kleinbuchstaben oder Großbuchstaben geändert werden können
Inhaltsverzeichnis
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