Start · Sprachen · PHP · Referenz · mb_ucfirst

mb_ucfirst

Funktion

Wandelt den ersten Buchstaben eines Multibyte-Strings in einen Großbuchstaben um, wobei die korrekte Kodierung berücksichtigt wird.

seit PHP 8.4.0 Kategorie: string

Signatur

mb_ucfirst(string $string, ?string $encoding = null): string

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

Typ
string
Beschreibung
Gibt den String zurück, bei dem das erste Zeichen in einen Großbuchstaben umgewandelt wurde. Alle weiteren Zeichen bleiben unverändert.

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
Ärger ist vorprogrammiert �rger ist vorprogrammiert

Formatierung von Namen in einer mehrsprachigen Anwendung

<?php
$names = ['étienne', 'öskar', 'jean-pierre', 'αλεξ'];

foreach ($names as $name) {
    echo mb_ucfirst($name, 'UTF-8') . "\n";
}
Étienne Öskar Jean-pierre Αλεξ

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;
Hello wörld

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