W3docs

ucwords()

La función ucwords() en PHP convierte en mayúscula el primer carácter de cada palabra de una cadena. Aprende su sintaxis, parámetros y ejemplos.

Introducción

La función ucwords() en PHP convierte en mayúscula el primer carácter de cada palabra de una cadena y devuelve el resultado. Es el ayudante ideal para transformar entradas del usuario como "jane doe" en un formato presentable como "Jane Doe" — muy útil para nombres, títulos, encabezados y etiquetas.

Esta página cubre la sintaxis, el parámetro opcional de delimitadores, las sorpresas que más confunden a los desarrolladores (no convierte el resto de la palabra a minúsculas, y por defecto solo divide en espacios en blanco), y cómo ucwords() difiere de las funciones relacionadas.

Sintaxis

ucwords(string $string, string $separators = " \t\r\n\f\v"): string
ParámetroDescripción
$stringLa cadena de entrada a transformar.
$separators(Opcional) Los caracteres que marcan el inicio de una nueva "palabra". Por defecto son los espacios en blanco: espacio, tabulación, retorno de carro, nueva línea, avance de página y tabulación vertical.

La función devuelve una nueva cadena — no modifica $string en su lugar, ya que en PHP las cadenas se pasan por valor.

Ejemplo básico

php— editable, runs on the server

Salida:

Hello, World!

ucwords() recorre la cadena y convierte en mayúscula cualquier letra que siga a un delimitador (o que esté al principio). Aquí tanto hello como world tienen su primera letra en mayúscula.

Atención: no convierte el resto a minúsculas

Una sorpresa común es que ucwords() solo afecta a la primera letra de cada palabra. Las letras que ya están en mayúsculas se dejan intactas:

<?php

echo ucwords("hello WORLD"); // Hello WORLD — "WORLD" keeps its existing uppercase letters
echo "\n";
echo ucwords("MARY had a LITTLE lamb"); // MARY Had A LITTLE Lamb

Si deseas un título limpio donde solo la primera letra de cada palabra esté en mayúscula, convierte primero la cadena a minúsculas con strtolower():

<?php

$title = "MARY HAD A LITTLE LAMB";
echo ucwords(strtolower($title)); // Mary Had A Little Lamb

Delimitadores personalizados

Por defecto solo los espacios en blanco separan las palabras, por lo que los valores con guiones o barras verticales se tratan como una sola palabra. Pasa el argumento opcional $separators para capitalizar también después de otros caracteres:

<?php

// Default: only the first letter is capitalized.
echo ucwords("hello-world|of-php");       // Hello-world|of-php
echo "\n";

// Treat "-" and "|" as word boundaries as well.
echo ucwords("hello-world|of-php", "-|"); // Hello-World|Of-Php

Esto es útil para slugs, nombres como "o'brien", o cualquier texto separado por tokens. Ten en cuenta que al proporcionar $separators, los espacios en blanco dejan de ser delimitadores a menos que los incluyas explícitamente — por lo que una llamada típica sería ucwords($name, " -").

ucwords() vs. funciones relacionadas

FunciónQué hace
ucfirst()Convierte en mayúscula solo el primer carácter de toda la cadena.
ucwords()Convierte en mayúscula el primer carácter de cada palabra.
strtoupper()Convierte toda la cadena a mayúsculas.
strtolower()Convierte toda la cadena a minúsculas.
lcfirst()Convierte en minúscula el primer carácter de la cadena.

Nota sobre caracteres multibyte y acentuados

ucwords() trabaja byte a byte y es fiable para ASCII puro. No capitaliza correctamente letras acentuadas o no latinas (por ejemplo é, ñ o caracteres cirílicos). Para el uso de mayúsculas en texto Unicode, usa la extensión mbstring con mb_convert_case($string, MB_CASE_TITLE, "UTF-8") en su lugar.

Conclusión

ucwords() es la forma estándar de convertir en mayúscula la primera letra de cada palabra en una cadena. Recuerda sus dos comportamientos clave: deja el resto de las letras tal como están (combínala con strtolower() para obtener un título limpio), y divide por espacios en blanco a menos que pases $separators personalizados. Para texto con caracteres acentuados, usa mb_convert_case() en su lugar.

Práctica

Práctica
¿Cuál es la función de 'ucwords' en PHP?
¿Cuál es la función de 'ucwords' en PHP?
Was this page helpful?