W3docs

ord()

Guía sobre la función PHP ord(), que devuelve el valor ASCII del primer carácter de una cadena. Útil para trabajar con caracteres y codificación.

La función ord() de PHP devuelve el valor de byte (0–255) del primer carácter de una cadena. Para texto ASCII simple, este es el código ASCII del carácter — por ejemplo, 'A' devuelve 65. Es la función inversa de chr(), que convierte un número de vuelta en un carácter.

Esta página cubre la sintaxis de ord(), su comportamiento con los distintos tipos de cadenas, la advertencia sobre multibyte que confunde a la mayoría de las personas, y patrones prácticos en los que convertir un carácter a su código numérico resulta realmente útil.

Sintaxis

ord(string $character): int

ord() recibe un único argumento, la cadena a inspeccionar, y devuelve un entero. Solo se examina el primer carácter — el resto de la cadena se ignora.

ParámetroDescripción
$characterLa cadena cuyo primer carácter (byte) se quiere obtener como valor numérico.

Ejemplo básico

php— editable, runs on the server

Salida:

72

72 es el código de "H", el primer carácter de "Hello". Como solo importa el primer carácter, ord('ABC') y ord('A') devuelven ambos 65.

Valores de retorno más comunes

Estos son los códigos que encontrarás con mayor frecuencia al trabajar con texto:

<?php
echo ord('A'), "\n"; // 65  — start of uppercase letters
echo ord('a'), "\n"; // 97  — start of lowercase letters
echo ord('0'), "\n"; // 48  — start of digit characters
echo ord(' '), "\n"; // 32  — space
echo ord("\n"), "\n"; // 10 — newline (line feed)
echo ord(''), "\n";  // 0   — empty string yields 0
?>

Salida:

65
97
48
32
10
0

Observa la última línea: pasar una cadena vacía no genera un error — ord('') simplemente devuelve 0.

La advertencia sobre multibyte

ord() trabaja con bytes, no con caracteres Unicode. Un carácter fuera del rango ASCII básico (como é, , o cualquier emoji) se almacena como varios bytes en UTF-8, y ord() devuelve únicamente el valor del primer byte:

<?php
echo ord('é'); // 195, not the Unicode code point 233
?>

Salida:

195

Si necesitas el punto de código Unicode real de un carácter multibyte, usa mb_ord() (de la extensión mbstring) en su lugar:

<?php
echo mb_ord('é', 'UTF-8'); // 233
?>

Por qué usar ord()

Convertir un carácter a un número te permite realizar operaciones aritméticas y comparaciones que serían incómodas con el carácter en sí mismo.

Cambiar mayúsculas/minúsculas manualmente. Las letras mayúsculas y minúsculas están exactamente 32 posiciones de diferencia en ASCII, por lo que puedes cambiar la capitalización sumando o restando 32 con ord() y chr():

<?php
$char = 'A';
echo chr(ord($char) + 32); // a
?>

Salida:

a

Inspeccionar cada carácter de una cadena. Recorre con strlen() e indexa en la cadena para ver el código de cada carácter — muy útil para depurar problemas de codificación o construir un cifrado simple:

<?php
$s = 'PHP';
for ($i = 0; $i < strlen($s); $i++) {
    echo $s[$i] . '=' . ord($s[$i]) . ' ';
}
?>

Salida:

P=80 H=72 P=80 

Validar entradas. Dado que las letras y los dígitos ocupan rangos conocidos, puedes comprobar la categoría de un carácter con una comparación numérica, por ejemplo ord($c) >= 48 && ord($c) <= 57 para verificar que $c es un dígito.

Funciones relacionadas

  • chr() — la inversa: devuelve el carácter para un valor ASCII/byte dado.
  • strlen() — el número de bytes de una cadena, útil para recorrer caracteres.
  • str_split() — divide una cadena en un array de caracteres.
  • substr() — extrae una parte de una cadena.
  • bin2hex() — muestra los bytes sin procesar de una cadena en formato hexadecimal.

Práctica

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