W3docs

chr()

La funzione chr() restituisce un carattere specifico in base al codice ASCII. Scopri la sintassi, i valori fuori range e gli esempi pratici.

La funzione PHP chr() restituisce una string a singolo byte contenente il carattere corrispondente a un determinato valore byte (comunemente un codice ASCII). È l'inverso di ord(), che funziona nel senso opposto — da un carattere al suo codice numerico.

Questa pagina illustra la sintassi di chr(), il comportamento con valori fuori dal range 0–255 e i pattern pratici per costruire stringhe a partire da codici numerici.

Sintassi

chr(int $codepoint): string

chr() accetta un parametro, $codepoint, il valore numerico del byte da restituire, e restituisce una string di un carattere (un byte). Il valore viene interpretato nell'intervallo 0–255. I valori fuori da questo range vengono avvolti con modulo 256: PHP aggiunge o sottrae 256 ripetutamente finché il valore non rientra tra 0 e 255. Quindi chr(321) equivale a chr(321 - 256), ovvero chr(65), e chr(-1) equivale a chr(255).

Esempio base

L'uso più comune è convertire un codice ASCII nel carattere corrispondente. Il codice 65 corrisponde alla lettera A:

php— editable, runs on the server

Output:

A

Passiamo il codice ASCII a chr(), che restituisce il carattere corrispondente.

Generare una sequenza di caratteri

Poiché le lettere hanno codici ASCII consecutivi, è possibile iterare su un intervallo numerico per costruire una sequenza. Le lettere maiuscole AZ vanno da 65 a 90:

php— editable, runs on the server

Output:

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

Ogni codice ASCII viene passato a chr(), che restituisce la lettera corrispondente.

Valori fuori dall'intervallo 0–255

chr() non genera mai un errore per valori fuori range — li avvolge con modulo 256. È utile saperlo per non ottenere risultati inaspettati quando un calcolo aritmetico spinge un valore oltre il range 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
?>

Tutte e tre le righe stampano A, perché 321 e 256 + 65 si riducono entrambi a 65.

chr() vs. ord()

chr() e ord() formano una coppia complementare:

  • chr(int) → restituisce il carattere corrispondente a un valore byte.
  • ord(string) → restituisce il valore byte del primo carattere di una string.
<?php
$code = ord("A"); // 65
echo chr($code);  // A
?>

Passare un valore attraverso ord() e poi chr() (o viceversa) restituisce il valore originale — il round-trip è garantito.

Una nota sul testo multibyte

chr() opera su singoli byte, quindi è affidabile solo per ASCII (0–127) e altre codifiche a byte singolo. Non produce un carattere multibyte UTF-8: passare un code point Unicode superiore a 255 non restituirà l'emoji o la lettera accentata desiderata — il valore verrà avvolto nell'intervallo 0–255. Per gestire code point Unicode completi, usa mb_chr() (e mb_ord() per l'operazione inversa) dall'estensione mbstring.

Funzioni correlate

  • ord() — l'inverso: da carattere al suo valore ASCII/byte.
  • str_split() — suddivide una string in un array di caratteri.
  • strtoupper() — converte una string in maiuscolo.
  • PHP Strings — panoramica sulla gestione delle stringhe in PHP.

Pratica

Pratica
Qual è la funzione di chr() in PHP?
Qual è la funzione di chr() in PHP?
Was this page helpful?