W3docs

chr()

La función chr() devuelve un carácter específico según el código ASCII dado. Conoce su sintaxis y casos de uso prácticos.

La función chr() de PHP devuelve una cadena de un solo byte que contiene el carácter correspondiente a un valor de byte dado (habitualmente un código ASCII). Es la función inversa de ord(), que hace el camino contrario — de un carácter a su código numérico.

Esta página cubre la sintaxis de chr(), cómo gestiona valores fuera del rango 0–255 y patrones prácticos para construir cadenas a partir de códigos numéricos.

Sintaxis

chr(int $codepoint): string

chr() toma un parámetro, $codepoint, el valor numérico del byte que se va a devolver, y retorna una cadena de un carácter (un byte). El valor se interpreta en el rango 0–255. Los valores fuera de ese rango se ajustan mediante módulo 256: PHP suma o resta 256 repetidamente hasta que el valor quede entre 0 y 255. Así, chr(321) equivale a chr(321 - 256), es decir, chr(65), y chr(-1) equivale a chr(255).

Ejemplo básico

El uso más habitual es convertir un código ASCII en su carácter. El código 65 corresponde a la letra A:

php— editable, runs on the server

Salida:

A

Pasamos el código ASCII a chr() y esta devuelve el carácter correspondiente.

Generación de una secuencia de caracteres

Dado que las letras tienen códigos ASCII consecutivos, se puede recorrer un rango numérico para construir una secuencia. Las letras mayúsculas AZ van del 65 al 90:

php— editable, runs on the server

Salida:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Cada código ASCII se pasa a chr(), que devuelve la letra correspondiente.

Valores fuera del rango 0–255

chr() nunca genera un error con valores fuera de rango — en su lugar los ajusta con módulo 256. Conviene tenerlo en cuenta para no obtener resultados inesperados cuando la aritmética lleva un valor más allá del rango del byte:

<?php
echo chr(65) . "\n";   // A   (in range)
echo chr(321) . "\n";  // A   321 - 256 = 65
echo chr(256 + 65);    // A   wraps back to 65
?>

Las tres líneas imprimen A, porque 321 y 256 + 65 se reducen ambas a 65.

chr() frente a ord()

chr() y ord() forman un par complementario:

  • chr(int) → devuelve el carácter para un valor de byte.
  • ord(string) → devuelve el valor de byte del primer carácter de una cadena.
<?php
$code = ord("A"); // 65
echo chr($code);  // A
?>

Pasar un valor por ord() y luego por chr() (o viceversa) devuelve el original — forman una ida y vuelta.

Nota sobre texto multibyte

chr() trabaja con bytes individuales, por lo que solo es fiable para ASCII (0–127) y otras codificaciones de un solo byte. No produce un carácter UTF-8 multibyte: pasar un punto de código Unicode superior a 255 no devolverá el emoji o la letra acentuada deseada — lo ajustará al rango 0–255. Para puntos de código Unicode completos, usa mb_chr() (y mb_ord() para el caso inverso) de la extensión mbstring.

Funciones relacionadas

  • ord() — la inversa: carácter a su valor ASCII/byte.
  • str_split() — divide una cadena en un array de caracteres.
  • strtoupper() — convierte una cadena a mayúsculas.
  • PHP Strings — descripción general del manejo de cadenas en PHP.

Práctica

Práctica
¿Cuál es la función de chr() en PHP?
¿Cuál es la función de chr() en PHP?
Was this page helpful?