strtoupper()
La función strtoupper() en PHP convierte todas las letras minúsculas de una cadena a mayúsculas. Aprende su sintaxis, el problema con multibyte y más.
Introducción
strtoupper() convierte todas las letras minúsculas de una cadena a mayúsculas y devuelve el resultado. La cadena original no se modifica — como todas las funciones de cadena de PHP, strtoupper() devuelve una nueva cadena en lugar de modificar su argumento en el lugar.
Se utiliza cuando se necesita una salida o comparación sin distinción de mayúsculas y minúsculas: normalizar códigos de país (us → US), mostrar un encabezado en mayúsculas o comparar dos cadenas sin importar la capitalización. Esta página cubre la sintaxis, la importante advertencia sobre multibyte y las funciones relacionadas que se suelen usar junto a ella.
Sintaxis
strtoupper(string $string): string| Parte | Descripción |
|---|---|
$string | La cadena de entrada. Obligatorio. |
| Retorno | Una copia de $string con cada letra ASCII minúscula (a–z) convertida a mayúscula. Los caracteres que no son letras se devuelven sin cambios. |
Un ejemplo básico
Los dígitos, espacios y signos de puntuación (!) pasan sin cambios — solo las letras se convierten a mayúsculas. Nótese que $string sigue conteniendo "Hello World!"; el texto convertido vive en $uppercase.
Comparación sin distinción de mayúsculas y minúsculas
Un uso frecuente es comparar la entrada del usuario sin preocuparse por cómo fue escrita. Convierte ambos lados a mayúsculas y luego compáralos:
<?php
$input = "Yes";
if (strtoupper($input) === "YES") {
echo "Confirmed";
} else {
echo "Not confirmed";
}
// ConfirmedPor eso strtoupper() (y su contraparte strtolower()) aparecen con tanta frecuencia en el código de manejo de formularios y enrutamiento.
El problema con multibyte
strtoupper() trabaja a nivel de bytes y no tiene en cuenta la configuración regional para todo lo que esté fuera del ASCII puro. Solo sabe convertir a–z. Las letras acentuadas y no latinas se dejan tal como están:
<?php
echo strtoupper("café"); // CAFé — the é is not convertedPara texto Unicode (cadenas UTF-8 con acentos, ñ, cirílico, griego, etc.) usa mb_strtoupper(), que comprende las codificaciones de caracteres:
<?php
echo mb_strtoupper("café", "UTF-8"); // CAFÉRegla general: datos solo ASCII (códigos, slugs, etiquetas solo en inglés) → strtoupper(). Cualquier cosa que pueda contener caracteres internacionales → mb_strtoupper().
Funciones relacionadas
strtolower()— la inversa: convierte las letras mayúsculas a minúsculas.ucfirst()— convierte a mayúscula solo el primer carácter de una cadena.ucwords()— convierte a mayúscula el primer carácter de cada palabra.
Resumen
strtoupper() devuelve una copia nueva completamente en mayúsculas de una cadena ASCII y es útil para normalizar datos y realizar comparaciones sin distinción de mayúsculas y minúsculas. Para texto que pueda contener caracteres no ASCII, es preferible usar mb_strtoupper() para que las letras acentuadas y no latinas se conviertan correctamente.