ucfirst()
Die PHP-Funktion ucfirst() wandelt das erste Zeichen eines Strings in einen Großbuchstaben um. Dieser Artikel erklärt Syntax, Rückgabewert und Sonderfälle.
ucfirst() gibt eine Kopie eines Strings zurück, bei der das erste Zeichen in einen Großbuchstaben umgewandelt wurde. Alle anderen Zeichen bleiben unverändert. Diese Funktion kommt zum Einsatz, wenn ein Name, ein Satz oder eine Bezeichnung großgeschrieben werden soll, ohne den Rest des Textes zu verändern.
Diese Seite behandelt die Syntax, den Rückgabewert, Sonderfälle, die für Überraschungen sorgen (Ziffern, bereits großgeschriebene Strings, Multibyte-Text), und wie sich ucfirst() von verwandten Funktionen zur Groß-/Kleinschreibung unterscheidet.
Syntax
ucfirst(string $string): string| Parameter | Beschreibung |
|---|---|
$string | Der Eingabe-String. |
Rückgabewert: ein neuer String mit dem ersten Zeichen in Großschreibung. ucfirst() ändert $string nicht direkt — die Funktion gibt das Ergebnis zurück, daher muss es gespeichert oder ausgegeben werden. Ist das erste Zeichen kein Kleinbuchstabe (eine Ziffer, ein Symbol oder bereits großgeschrieben), wird der String unverändert zurückgegeben.
Einfaches Beispiel
Nur das führende h wird zu H. Das Komma, der Rest der Wörter und das Ausrufezeichen bleiben unberührt — ucfirst() wandelt nichts nach dem ersten Zeichen um oder in Kleinbuchstaben.
Was ucfirst() nicht tut
Ein häufiger Fehler ist die Erwartung, dass ucfirst() den gesamten String bereinigt. Das tut es nicht:
<?php
echo ucfirst("HELLO") . "\n"; // HELLO (first char already uppercase → no change)
echo ucfirst("hELLO") . "\n"; // HELLO (only the first char is touched, not the rest)
echo ucfirst("123abc") . "\n"; // 123abc (first char is a digit → nothing to capitalize)Wenn ein sauber großgeschriebenes Wort aus unsauberer Eingabe benötigt wird, zunächst in Kleinbuchstaben umwandeln und dann großschreiben:
<?php
$messy = "hELLO";
echo ucfirst(strtolower($messy)); // HelloJeden Wortanfang großschreiben
ucfirst() betrifft nur das allererste Zeichen des gesamten Strings. Um den ersten Buchstaben jedes Wortes großzuschreiben, stattdessen ucwords() verwenden:
<?php
$title = "the quick brown fox";
echo ucfirst($title) . "\n"; // The quick brown fox
echo ucwords($title) . "\n"; // The Quick Brown FoxMultibyte-/Nicht-ASCII-Text
ucfirst() arbeitet byteweise und versteht nur ASCII-Buchstaben (a–z). Akzentuierte oder nicht-lateinische Anfangsbuchstaben wie é, ñ oder kyrillische Zeichen werden nicht korrekt in Großbuchstaben umgewandelt. Für solche Fälle benötigt man die Multibyte-String-Erweiterung — da es kein mb_ucfirst() gibt, ist folgendes Muster gebräuchlich:
<?php
function mb_ucfirst(string $string, string $encoding = "UTF-8"): string
{
$first = mb_strtoupper(mb_substr($string, 0, 1, $encoding), $encoding);
return $first . mb_substr($string, 1, null, $encoding);
}
echo mb_ucfirst("élise"); // ÉliseWann verwenden
- Benutzereingaben formatieren —
"john", das in einem Formular eingegeben wurde, als"John"anzeigen. - Satztypografie — das erste Wort einer generierten Nachricht oder Bezeichnung großschreiben.
- Lesbare Bezeichner erstellen — ein Slug-Segment in eine Überschrift umwandeln.
Für die umgekehrte Operation (erstes Zeichen kleinschreiben) siehe lcfirst(). Um die Groß-/Kleinschreibung des gesamten Strings zu ändern, siehe strtoupper() und strtolower().
Zusammenfassung
ucfirst() wandelt nur das erste Zeichen eines Strings in einen Großbuchstaben um und gibt das Ergebnis zurück, ohne das Original zu verändern. Nicht-Buchstaben und bereits großgeschriebene Zeichen werden ignoriert, der Rest des Strings bleibt unberührt, und die Funktion ist ASCII-only — in Kombination mit strtolower() lässt sich unsaubere Eingabe normalisieren, mit ucwords() jedes Wort großschreiben, oder mit den obigen Multibyte-Funktionen akzentuierter Text verarbeiten.