W3docs

ord()

Artigo sobre a função PHP ord(), usada para retornar o valor ASCII do primeiro caractere de uma string. Útil para trabalhar com texto.

A função PHP ord() retorna o valor do byte (0–255) do primeiro caractere de uma string. Para texto ASCII simples, este é o código ASCII do caractere — por exemplo, 'A' resulta em 65. É a inversa de chr(), que converte um número de volta em caractere.

Esta página aborda a sintaxe de ord(), como ela se comporta com as strings que você vai passar, o problema com multibytes que confunde a maioria das pessoas, e padrões práticos onde converter um caractere em seu código numérico é genuinamente útil.

Sintaxe

ord(string $character): int

ord() recebe um único argumento, a string a ser inspecionada, e retorna um inteiro. Apenas o primeiro caractere é examinado — o restante da string é ignorado.

ParâmetroDescrição
$characterA string cujo primeiro caractere (byte) você deseja obter o valor numérico.

Exemplo básico

php— editable, runs on the server

Saída:

72

72 é o código de "H", o primeiro caractere de "Hello". Como apenas o primeiro caractere importa, ord('ABC') e ord('A') retornam 65.

Valores de retorno comuns

Estes são os códigos que você encontrará com mais frequência ao trabalhar com 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
?>

Saída:

65
97
48
32
10
0

Observe a última linha: passar uma string vazia não gera um erro — ord('') simplesmente retorna 0.

O problema com multibytes

ord() trabalha com bytes, não com caracteres Unicode. Um caractere fora do intervalo ASCII básico (como é, , ou qualquer emoji) é armazenado como vários bytes em UTF-8, e ord() retorna apenas o valor do primeiro byte:

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

Saída:

195

Se você precisar do ponto de código Unicode real de um caractere multibyte, use mb_ord() (da extensão mbstring):

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

Por que usar ord()

Converter um caractere em número permite fazer aritmética e comparações que seriam complicadas com o próprio caractere.

Alterar maiúsculas/minúsculas manualmente. Letras maiúsculas e minúsculas estão exatamente 32 unidades separadas no ASCII, portanto você pode alternar entre elas adicionando ou subtraindo 32 com ord() e chr():

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

Saída:

a

Inspecionar cada caractere em uma string. Use um laço com strlen() e indexe a string para ver o código de cada caractere — útil para depurar problemas de codificação ou construir uma cifra simples:

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

Saída:

P=80 H=72 P=80 

Validar entrada. Como letras e dígitos ocupam intervalos conhecidos, você pode testar a categoria de um caractere com uma comparação numérica, por exemplo ord($c) >= 48 && ord($c) <= 57 para verificar se $c é um dígito.

Funções relacionadas

  • chr() — a inversa: retorna o caractere para um dado valor ASCII/byte.
  • strlen() — o número de bytes em uma string, útil para percorrer caracteres.
  • str_split() — divide uma string em um array de caracteres.
  • substr() — extrai parte de uma string.
  • bin2hex() — visualiza os bytes brutos de uma string em hexadecimal.

Prática

Prática
O que a função ord() do PHP faz?
O que a função ord() do PHP faz?
Was this page helpful?