Signatur
Beschreibung
mb_convert_case() konvertiert die Groß-/Kleinschreibung eines Strings korrekt für multibyte-fähige Zeichenkodierungen wie UTF-8. Im Gegensatz zu strtolower(), strtoupper() oder ucwords() verarbeitet diese Funktion auch Unicode-Zeichen außerhalb des ASCII-Bereichs korrekt – z. B. Umlaute (ä, ö, ü), akzentuierte Zeichen oder kyrillische Buchstaben.
Der Modus wird über eine der vordefinierten Konstanten gesteuert: MB_CASE_UPPER wandelt alle Zeichen in Großbuchstaben um, MB_CASE_LOWER in Kleinbuchstaben, MB_CASE_TITLE wandelt den ersten Buchstaben jedes Wortes in einen Großbuchstaben um (Title Case). Ab PHP 7.3 stehen zusätzlich die Varianten MB_CASE_FOLD, MB_CASE_FOLD_SIMPLE, MB_CASE_UPPER_SIMPLE und MB_CASE_LOWER_SIMPLE zur Verfügung, die sprachunabhängige, normalisierte Konvertierungen ermöglichen.
Wird kein $encoding angegeben, verwendet die Funktion die intern eingestellte Kodierung (gesetzt via mb_internal_encoding()). In den meisten modernen Anwendungen wird UTF-8 verwendet und sollte explizit übergeben werden.
Die Funktion eignet sich besonders für internationalisierte Anwendungen, bei denen Benutzereingaben oder Datenbankinhalte in einheitlicher Schreibweise gespeichert oder angezeigt werden sollen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu konvertierende Eingabe-String. | |
| $mode Pflicht | int | Der gewünschte Konvertierungsmodus. Mögliche Konstanten: MB_CASE_UPPER, MB_CASE_LOWER, MB_CASE_TITLE, MB_CASE_FOLD (ab PHP 7.3), MB_CASE_FOLD_SIMPLE (ab PHP 7.3), MB_CASE_UPPER_SIMPLE (ab PHP 7.3), MB_CASE_LOWER_SIMPLE (ab PHP 7.3). |
|
| $encoding | ?string | null | Die Zeichenkodierung des Eingabe-Strings, z. B. 'UTF-8'. Wird null übergeben, wird die intern eingestellte Kodierung verwendet (mb_internal_encoding()). |
Rückgabewert
$mode wird der ursprüngliche String unverändert zurückgegeben.Beispiele
Grundlegende Groß-/Kleinschreibung mit UTF-8
<?php
$text = 'über den Özean';
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8') . PHP_EOL;
echo mb_convert_case($text, MB_CASE_LOWER, 'UTF-8') . PHP_EOL;
echo mb_convert_case($text, MB_CASE_TITLE, 'UTF-8') . PHP_EOL;
Vergleich mit nicht-multibyte-fähigen Funktionen
<?php
$text = 'Ärger mit Äpfeln';
// Falsch: strtolower() verarbeitet Umlaute nicht korrekt
echo strtolower($text) . PHP_EOL;
// Korrekt: mb_convert_case() mit UTF-8
echo mb_convert_case($text, MB_CASE_LOWER, 'UTF-8') . PHP_EOL;
Case Folding für sprachunabhängige Vergleiche (PHP 7.3+)
<?php
// MB_CASE_FOLD eignet sich für case-insensitive Vergleiche (z. B. deutsches 'ß' → 'ss')
$a = mb_convert_case('Straße', MB_CASE_FOLD, 'UTF-8');
$b = mb_convert_case('STRASSE', MB_CASE_FOLD, 'UTF-8');
var_dump($a === $b); // true, weil 'ß' zu 'ss' gefaltet wird
// Wichtig · Fallstricke
Achtung beim Vergleich von Strings: Für case-insensitive Vergleiche sollte MB_CASE_FOLD statt MB_CASE_LOWER verwendet werden, da MB_CASE_FOLD spezielle Unicode-Fälle wie das deutsche ß (→ ss) korrekt behandelt.
Title Case: MB_CASE_TITLE wandelt den ersten Buchstaben jedes Wortes in einen Großbuchstaben um. Die Wortgrenzen basieren auf Unicode-Definitionen und können sich von ucwords() unterscheiden.
Die Funktion steht nur zur Verfügung, wenn PHP mit der mbstring-Erweiterung kompiliert wurde. Ist diese nicht vorhanden, führt der Aufruf zu einem fatalen Fehler.