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): stringchr() 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:
Output:
APassiamo 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 A–Z vanno da 65 a 90:
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 ZOgni 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.