W3docs

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ámetroDescripción
$stringLa 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

php— editable, runs on the server

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));   // Hello

Poner 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 Fox

Texto multibyte / no ASCII

ucfirst() trabaja byte a byte y solo entiende letras ASCII (az). 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");   // Élise

Cuá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.

Práctica

Práctica
¿Qué hace la función ucfirst() de PHP?
¿Qué hace la función ucfirst() de PHP?
Was this page helpful?