Sie können mit der Funktion ucfirst() das erste Zeichen einer Zeichenkette in einen Großbuchstaben umwandeln. Dies können Sie zum Beispiel bei einem Text anwenden, dazu müssten Sie bei einem Text diesen mit explode() und den Satzzeichen Punkt in ein Array zerlegen, danach können Sie mit einer Schleife jeden einzelnen Satz mit ucfirst() formatieren. Somit hätten Sie jeden Satz von einem Text mit einem großen Anfangsbuchstaben. Dies sieht einfach sauberer aus und der Text müsste nicht nachträglich händisch bearbeitet werden. Dazu sehe Beispiel 2.
Der Syntax:
ucfirst(Zeichenkette);
Beispiel:
<?php
$string = 'das ist ein ucfirst() test.';
$ucfirst_rueckgabe = ucfirst($string);
echo $ucfirst_rueckgabe;
?>
Ausgabe:
Das ist ein ucfirst() test.
Erklärung:
Als Erstes wird in der Variable: $string ein Text gespeichert, dieser Text beginnt mit einem kleinen Buchstaben am Anfang. Danach wird mit der Funktion ucfirst() der Text formatiert und in der Variable: $ucfirst_rueckgabe hinterlegt. Anschließend wird diese Variable mit dem Befehl echo ausgegeben.
Beispiel 2:
<?php
$string = 'das ist ein ucfirst() test.';
$string .= 'der text geht weiter.';
$explode_rueckgabe = explode(".", $string);
$neuer_string = '';
foreach ($explode_rueckgabe as $key => $wert) {
if ($neuer_string != '')
$neuer_string .= '. '.ucfirst($wert);
else
$neuer_string .= ucfirst($wert);
}
echo $neuer_string;
?>
Ausgabe:
Das ist ein ucfirst() test. Der text geht weiter.
Erklärung:
In der Variable: $string sind zwei Sätze enthalten, wo die Anfangsbuchstaben der Sätze bei den kleingeschrieben sind. Es wird als Erstes mit der Funktion explode() der Text in Array zerlegt, das Array befindet sich danach in der Variable $explode_rueckgabe. Als Nächstes wird mit einer so genannten foreach() Schleife das Array durchlaufen. In dieser Schleife wird überprüft, ob bereits in der Variable: $neuer_string ein Inhalt hinterlegt ist, mit einer sogenannten If- Anweisung. Wenn ein Inhalt hinterlegt ist, wird automatisch am Ende den letzten Satz ein Punkt und ein Leerzeichen angefügt. Danach wird mit der Ausgabefunktion echo die Variable: $neuer_string ausgegeben.
Alternativ können Sie sich die Funktionen: strtolower() und strtoupper() ansehen. Diese Funktionen formatieren den Text im Klein und Großbuchstaben.
ucfirst() und Umlaute: Das Multibyte-Problem
Die Funktion ucfirst() arbeitet nur mit ASCII-Zeichen korrekt. Bei Umlauten wie ä, ö oder ü bleibt der Buchstabe unverändert, weil diese Zeichen aus mehreren Bytes bestehen. Für Texte mit Umlauten verwenden Sie stattdessen mb_strtoupper() in Kombination mit mb_substr().
<?php
$text = 'übersicht der Funktionen';
echo ucfirst($text);
/* Ausgabe: übersicht der Funktionen */
/* Das ü bleibt klein! */
/* Multibyte-sichere Alternative: */
function mb_ucfirst($string) {
$first = mb_strtoupper(mb_substr($string, 0, 1));
$rest = mb_substr($string, 1);
return $first . $rest;
}
echo mb_ucfirst($text);
/* Ausgabe: Übersicht der Funktionen */
?>
Die Hilfsfunktion mb_ucfirst() trennt das erste Zeichen ab, wandelt es mit mb_strtoupper() in einen Großbuchstaben um und setzt den Rest wieder zusammen. So funktioniert die Umwandlung auch mit deutschen Umlauten zuverlässig.
lcfirst(): Das Gegenstueck zu ucfirst()
Die Funktion lcfirst() macht genau das Gegenteil: Sie wandelt das erste Zeichen einer Zeichenkette in einen Kleinbuchstaben um. Das kann nützlich sein, wenn Sie Variablennamen oder Bezeichner erzeugen möchten.
<?php
echo lcfirst('Hello World');
/* Ausgabe: hello World */
echo lcfirst('PHP ist toll');
/* Ausgabe: pHP ist toll */
?>
ucwords(): Jeden Wortanfang groß schreiben
Wenn Sie nicht nur das erste Zeichen, sondern den Anfangsbuchstaben jedes Wortes groß schreiben möchten, verwenden Sie ucwords(). Das ist zum Beispiel bei der Formatierung von Namen sinnvoll.
<?php
$name = 'max mustermann';
echo ucwords($name);
/* Ausgabe: Max Mustermann */
/* Trennzeichen anpassen: */
$doppelname = 'anna-maria schmidt';
echo ucwords($doppelname, ' -');
/* Ausgabe: Anna-Maria Schmidt */
?>
Der optionale zweite Parameter von ucwords() legt fest, welche Zeichen als Worttrenner gelten. Standardmäßig sind das Leerzeichen, Tabulator, Zeilenumbruch und einige weitere Steuerzeichen. Wenn auch Bindestriche als Trenner dienen sollen, geben Sie diese explizit mit an.
Praxisbeispiel: Benutzereingaben automatisch korrigieren
Bei Formulareingaben schreiben Benutzer ihren Namen häufig komplett in Kleinbuchstaben oder komplett in Großbuchstaben. Mit einer Kombination aus strtolower() und ucwords() können Sie das automatisch korrigieren.
<?php
function formatiere_name($name) {
$name = trim($name);
$name = strtolower($name);
return ucwords($name, ' -');
}
echo formatiere_name('MAX MUSTERMANN');
/* Ausgabe: Max Mustermann */
echo formatiere_name('anna-maria schmidt');
/* Ausgabe: Anna-Maria Schmidt */
echo formatiere_name(' lisa mueller ');
/* Ausgabe: Lisa Mueller */
?>
Die Funktion entfernt zuerst überflüssige Leerzeichen mit trim(), wandelt alles in Kleinbuchstaben um und setzt dann jeden Wortanfang in Großbuchstaben. So erhalten Sie eine einheitliche Darstellung unabhängig davon, wie der Benutzer den Namen eingegeben hat.
Übersicht der verwandten Funktionen
PHP bietet mehrere Funktionen zur Steuerung der Groß- und Kleinschreibung. Die folgende Tabelle gibt einen Überblick.
| Funktion | Beschreibung |
|---|
ucfirst() | Erstes Zeichen in Großbuchstaben |
lcfirst() | Erstes Zeichen in Kleinbuchstaben |
ucwords() | Jedes Wort beginnt mit Großbuchstaben |
strtolower() | Gesamten String in Kleinbuchstaben |
strtoupper() | Gesamten String in Großbuchstaben |
mb_strtoupper() | Multibyte-sichere Variante von strtoupper() |