Start · Sprachen · PHP · Referenz · mb_convert_case

mb_convert_case

Funktion

Wandelt die Groß-/Kleinschreibung eines Strings unter Berücksichtigung von Multibyte-Zeichensätzen (z. B. UTF-8) um.

seit PHP 4.3.0 Kategorie: string

Signatur

mb_convert_case(string $string, int $mode, ?string $encoding = null): string

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

Typ
string
Beschreibung
Gibt den konvertierten String zurück. Bei ungültigem $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;
ÜBER DEN ÖZEAN über den özean Über Den Özean

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;
Ärger mit Äpfeln ärger mit äpfeln

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
bool(true)

// 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.