Signatur
Beschreibung
mb_ucfirst() funktioniert analog zur eingebauten ucfirst()-Funktion, ist jedoch für Multibyte-Zeichenkodierungen (z. B. UTF-8) ausgelegt. Während ucfirst() nur mit Single-Byte-Zeichen zuverlässig arbeitet und bei Umlauten oder anderen Sonderzeichen versagt, behandelt mb_ucfirst() auch mehrere Bytes umfassende Zeichen korrekt.
Typische Anwendungsfälle sind die Formatierung von Namen, Titeln oder Satzanfängen in mehrsprachigen Anwendungen — besonders wenn Sprachen wie Deutsch, Französisch, Türkisch oder andere mit Umlauten und Sonderzeichen verwendet werden. So wird beispielsweise ärger korrekt zu Ärger umgewandelt, was mit der Byte-orientierten Variante ucfirst() nicht möglich wäre.
Der optionale Parameter $encoding erlaubt die Angabe einer spezifischen Zeichenkodierung. Wird er weggelassen oder auf null gesetzt, verwendet die Funktion die interne Multibyte-Kodierung, die über mb_internal_encoding() gesetzt wurde (standardmäßig UTF-8).
Alle übrigen Zeichen des Strings bleiben unverändert. Soll zusätzlich der Rest des Strings in Kleinbuchstaben umgewandelt werden, kann mb_strtolower() vorab genutzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der Eingabe-String, dessen erstes Zeichen in einen Großbuchstaben umgewandelt werden soll. | |
| $encoding | ?string | null | Die zu verwendende Zeichenkodierung, z. B. 'UTF-8'. Wenn null oder weggelassen, wird die interne Kodierung gemäß mb_internal_encoding() verwendet. |
Rückgabewert
Beispiele
Großschreibung eines Umlauts am Anfang
<?php
$text = 'ärger ist vorprogrammiert';
echo mb_ucfirst($text, 'UTF-8');
// Vergleich mit ucfirst (fehlerhaft bei Umlauten):
echo "\n";
echo ucfirst($text); // Gibt fehlerhaftes Ergebnis zurück
Formatierung von Namen in einer mehrsprachigen Anwendung
<?php
$names = ['étienne', 'öskar', 'jean-pierre', 'αλεξ'];
foreach ($names as $name) {
echo mb_ucfirst($name, 'UTF-8') . "\n";
}
Kombination mit mb_strtolower für saubere Titelformatierung
<?php
$input = 'hELLO wÖRLD';
$formatted = mb_ucfirst(mb_strtolower($input, 'UTF-8'), 'UTF-8');
echo $formatted;
// Wichtig · Fallstricke
Verfügbarkeit: mb_ucfirst() wurde erst in PHP 8.4.0 eingeführt. Für ältere PHP-Versionen muss eine eigene Implementierung genutzt werden, z. B.:mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($str, 1, null, 'UTF-8')
Türkische Sonderzeichen: Bei der türkischen Sprache existiert der Sonderfall i → İ (mit Punkt). Die Funktion verhält sich entsprechend der verwendeten Kodierung und Locale-Einstellungen – für vollständige Locale-Sensitivität sollte Intl-Extension geprüft werden.
Leere Strings: Bei einem leeren String wird ein leerer String zurückgegeben, ohne Fehler oder Warnung.