W3docs

chr()

A função chr() retorna um caractere específico com base no código ASCII. Veja a sintaxe, exemplos práticos e o comportamento fora do intervalo 0–255.

A função chr() do PHP retorna uma string de um único byte contendo o caractere que corresponde a um determinado valor de byte (geralmente um código ASCII). Ela é o inverso de ord(), que faz o caminho inverso — de um caractere para seu código numérico.

Esta página aborda a sintaxe de chr(), como ela lida com valores fora do intervalo 0–255 e padrões práticos para construir strings a partir de códigos numéricos.

Sintaxe

chr(int $codepoint): string

chr() aceita um parâmetro, $codepoint, o valor numérico do byte a retornar, e devolve uma string de um caractere (um byte). O valor é interpretado no intervalo 0–255. Valores fora desse intervalo são envolvidos usando módulo 256: o PHP adiciona ou subtrai 256 repetidamente até que o valor fique entre 0 e 255. Assim, chr(321) é o mesmo que chr(321 - 256), ou seja, chr(65), e chr(-1) é o mesmo que chr(255).

Exemplo básico

O uso mais comum é converter um código ASCII no seu caractere correspondente. O código 65 representa a letra A:

php— editable, runs on the server

Saída:

A

Passamos o código ASCII para chr(), e ela retorna o caractere correspondente.

Gerando uma sequência de caracteres

Como as letras possuem códigos ASCII consecutivos, é possível percorrer um intervalo numérico para construir uma sequência. As letras maiúsculas AZ vão de 65 a 90:

php— editable, runs on the server

Saída:

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 é passado para chr(), que retorna a letra correspondente.

Valores fora de 0–255

chr() nunca gera um erro com valores fora do intervalo — ela usa módulo 256 para fazer o wraparound. Vale saber disso para não obter resultados inesperados quando operações aritméticas empurrem um valor além do intervalo de 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
?>

As três linhas imprimem A, porque 321 e 256 + 65 ambos se reduzem a 65.

chr() vs. ord()

chr() e ord() formam um par complementar:

  • chr(int) → retorna o caractere para um valor de byte.
  • ord(string) → retorna o valor de byte do primeiro caractere de uma string.
<?php
$code = ord("A"); // 65
echo chr($code);  // A
?>

Passar um valor por ord() e depois por chr() (ou vice-versa) retorna o original — eles formam uma operação de ida e volta.

Uma nota sobre texto multibyte

chr() opera em bytes únicos, portanto é confiável apenas para ASCII (0–127) e outras codificações de byte único. Ela não produz um caractere multibyte UTF-8: passar um ponto de código Unicode acima de 255 não retornará o emoji ou a letra acentuada esperada — o valor será envolvido no intervalo 0–255. Para pontos de código Unicode completos, use mb_chr() (e mb_ord() para o inverso) da extensão mbstring.

Funções relacionadas

  • ord() — o inverso: converte um caractere para seu valor ASCII/byte.
  • str_split() — divide uma string em um array de caracteres.
  • strtoupper() — converte uma string para maiúsculas.
  • PHP Strings — visão geral do tratamento de strings em PHP.

Prática

Prática
Qual é a função de chr() em PHP?
Qual é a função de chr() em PHP?
Was this page helpful?