ucfirst()
La función ucfirst() en PHP convierte el primer carácter de una cadena a mayúscula. Aprende su sintaxis, valor de retorno y casos de uso.
ucfirst() devuelve una copia de una cadena con su primer carácter convertido a mayúscula. El resto de los caracteres se deja exactamente como estaba. Es la función que se usa cuando se necesita poner en mayúscula un nombre, una oración o una etiqueta sin modificar el resto del texto.
Esta página cubre la sintaxis, el valor de retorno, los casos extremos que sorprenden a muchos (números, cadenas ya en mayúscula, texto multibyte) y cómo ucfirst() difiere de las funciones de capitalización relacionadas.
Sintaxis
ucfirst(string $string): string| Parámetro | Descripción |
|---|---|
$string | La cadena de entrada. |
Valor de retorno: una nueva cadena con el primer carácter en mayúscula. ucfirst() no modifica $string en su lugar — devuelve el resultado, por lo que debe capturarlo o mostrarlo con echo. Si el primer carácter no es una letra minúscula (un dígito, un símbolo o ya está en mayúscula), la cadena se devuelve sin cambios.
Ejemplo básico
Solo la h inicial se convierte en H. La coma, el resto de las palabras y el signo de exclamación no se modifican — ucfirst() nunca convierte a minúsculas ni cambia nada después del primer carácter.
Lo que ucfirst() no hace
Un error común es esperar que ucfirst() limpie toda la cadena. No lo hace:
<?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)Si se desea una palabra Capitalizada correcta a partir de una entrada desordenada, primero conviértela a minúsculas y luego capitalízala:
<?php
$messy = "hELLO";
echo ucfirst(strtolower($messy)); // HelloPoner en mayúscula cada palabra
ucfirst() solo afecta al primer carácter de toda la cadena. Para capitalizar la primera letra de cada palabra, utiliza ucwords() en su lugar:
<?php
$title = "the quick brown fox";
echo ucfirst($title) . "\n"; // The quick brown fox
echo ucwords($title) . "\n"; // The Quick Brown FoxTexto multibyte / no ASCII
ucfirst() trabaja byte a byte y solo entiende letras ASCII (a–z). No convertirá correctamente a mayúscula las primeras letras acentuadas o no latinas como é, ñ o caracteres cirílicos. Para esos casos, el manejo de letras minúsculas requiere la extensión de cadenas multibyte — no existe mb_ucfirst(), por lo que un patrón habitual es:
<?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"); // ÉliseCuándo utilizarla
- Formatear entradas del usuario — mostrar
"john"introducido en un formulario como"John". - Capitalización de oraciones — poner en mayúscula la primera palabra de un mensaje o etiqueta generados.
- Crear identificadores legibles — convertir un segmento de slug en un encabezado.
Para la operación contraria (convertir el primer carácter a minúscula) consulta lcfirst(). Para cambiar el caso de toda la cadena, consulta strtoupper() y strtolower().
Resumen
ucfirst() convierte a mayúscula solo el primer carácter de una cadena y devuelve el resultado sin modificar el original. Ignora los no-caracteres y los caracteres ya en mayúscula, nunca toca el resto de la cadena y es solo ASCII — combínala con strtolower() para normalizar entradas desordenadas, con ucwords() para capitalizar cada palabra, o con las funciones multibyte anteriores para texto acentuado.