Funktion ucfirst() - Erstes Zeichen eines Strings in Großbuchstaben umwandeln

In PHP-Programmen erfolgt häufig die Umwandlung von Klein- zu Großbuchstaben. Hierbei ist häufig erwünscht, nur das erste Zeichen eines Strings mit Großbuchstaben beginnen zu lassen. So kann man evtl. Fehler auffangen, wenn ein Eintrag mit Kleinbuchstaben begonnen wurde. Es kann auch vorkommen, dass z.B. die Keywords für eine Suchanwendung in Kleinbuchstaben in der Datenbank gespeichert sind, diese in der Darstellung jedoch mit Großbuchstaben beginnen sollen. Hierfür eignet sich die Funktion ucfirst(). Als Parameter wird nur ein Wert übergeben.

  1. Die Zeichenkette für die Umwandlung des ersten Zeichens (string).

Beim folgenden Beispiel wird der Text hello in Hello umgewandelt, das zweite Wort bleibt jedoch wie es vorher war.

<?php

$str = 'hello world';

// Ausgabe Hello world
echo ucfirst($str);

?>

Es kann auch der Fall eintreten, in dem ein String komplett in Großbuchstaben vorliegt, der String in Kleinbuchstaben umgewandelt, jedoch mit einem Großbuchstaben beginnen soll. In dem Fall kann man die Funktion ucfirst() mit strtolower() kombinieren. Beim folgenden Beispiel wird HELLO in Hello umgewandelt.

<?php

$str = 'HELLO';

// Ausgabe Hello
echo ucfirst(strtolower($str));

?>

Die Umwandlung des ersten Zeichens ist abhängig vom Gebietsschema (setlocale). Bei Umlauten oder anderen Multibyte-Zeichen in der Zeichenkodierung UTF-8 funktioniert ucfirst() in der Regel nicht so, wie es eigentlich sein sollte. Beim folgenden Beispiel erfolgt keine Änderung des ersten Zeichens, da der Kleinbuchstabe ü nicht zum Großbuchstaben Ü zugeordnet wird.

<?php

$str = 'übungen';

// Ausgabe übungen
echo ucfirst($str);

?>

Falls zu Beginn des Strings auch Umlaute oder andere Multibyte-Zeichen in der Zeichenkodierung UTF-8 umgewandelt werden sollen, kann man eine eigene Funktion schreiben. Beim folgenden Beispiel sorgt die selbst geschriebene Funktion ucfirst_utf8() für die korrekte Umwandlung. Es wären auch andere Lösungen möglich.

<?php

function ucfirst_utf8($str)
{
  $a = mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8');
  return $a . mb_substr($str, 1, null, 'UTF-8');
}

$str = 'übungen';

// Ausgabe Übungen
echo ucfirst_utf8($str);

?>

In der Funktion ucfirst_utf8() werden hauptsächlich die Multibyte-Funktionen mb_strtoupper() und mb_substr() verwendet. Im ersten Schritt wird der erste Buchstabe aus dem String in Großbuchstaben umgewandelt und in der Variable $a gespeichert. Danach erfolgt eine Zusammensetzung des Strings mit dem Zeichen in Variable $a sowie der restlichen Zeichenkette. Der zusammengesetzte String ist der Rückgabewert der Funktion.

Zu beachten ist hierbei, dass die Multibyte-Funktionen nur genutzt werden können, wenn auf dem Server die Erweiterung mbstring aktiviert ist. In diesem Beispiel wurde als Parameter die Zeichenkodierung UTF-8 angegeben. Die Angabe ist optional und kann auch entfallen. In dem Fall gilt die interne Zeichenkodierung.

Entscheidend für die Umwandlung ist, dass das erste Zeichen ein Teil des Alphabets ist. Ziffern und Sonderzeichen werden nicht umgewandelt. Beim folgenden Beispiel ist die Ausgabe 123.

<?php

$str = '123';

// Ausgabe 123
echo ucfirst($str);

?>

Falls alle Wörter in einem String mit Großbuchstaben beginnen sollen, kann man die Funktion ucwords() verwenden.