W3docs

ord()

Guida alla funzione PHP ord(), che restituisce il valore ASCII del primo carattere di una stringa. Utile per lavorare con i codici numerici dei caratteri.

La funzione PHP ord() restituisce il valore byte (0–255) del primo carattere di una stringa. Per testo ASCII semplice corrisponde al codice ASCII del carattere — ad esempio, 'A' restituisce 65. È l'inversa di chr(), che converte un numero nel carattere corrispondente.

Questa pagina illustra la sintassi di ord(), il suo comportamento con i tipi di stringhe più comuni, l'insidia dei caratteri multibyte che trae in inganno molti sviluppatori, e i pattern pratici in cui convertire un carattere nel suo codice numerico risulta davvero utile.

Sintassi

ord(string $character): int

ord() accetta un singolo argomento, la stringa da esaminare, e restituisce un intero. Viene esaminato solo il primo carattere — il resto della stringa viene ignorato.

ParametroDescrizione
$characterLa stringa di cui si vuole il valore numerico del primo carattere (byte).

Esempio di base

php— editable, runs on the server

Output:

72

72 è il codice di "H", il primo carattere di "Hello". Poiché conta solo il primo carattere, ord('ABC') e ord('A') restituiscono entrambi 65.

Valori restituiti più comuni

Questi sono i codici che si incontrano più spesso quando si lavora con il testo:

<?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
?>

Output:

65
97
48
32
10
0

Si noti l'ultima riga: passare una stringa vuota non genera un errore — ord('') restituisce semplicemente 0.

L'insidia dei caratteri multibyte

ord() lavora sui byte, non sui caratteri Unicode. Un carattere al di fuori dell'intervallo ASCII di base (come é, , o qualsiasi emoji) viene memorizzato in più byte in UTF-8, e ord() restituisce solo il valore del primo byte:

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

Output:

195

Se si ha bisogno del vero code point Unicode di un carattere multibyte, utilizzare invece mb_ord() (dall'estensione mbstring):

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

Perché usare ord()

Convertire un carattere in un numero consente di eseguire operazioni aritmetiche e confronti che sarebbero scomodi sul carattere stesso.

Cambiare la maiuscola/minuscola manualmente. Le lettere maiuscole e minuscole si trovano a esattamente 32 di distanza nell'ASCII, quindi è possibile alternare la maiuscola aggiungendo o sottraendo 32 con ord() e chr():

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

Output:

a

Esaminare ogni carattere in una stringa. Si esegue un ciclo con strlen() e si accede alla stringa tramite indice per vedere il codice di ogni carattere — utile per il debug di problemi di codifica o per costruire un cifrario semplice:

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

Output:

P=80 H=72 P=80 

Validare l'input. Poiché lettere e cifre occupano intervalli noti, è possibile testare la categoria di un carattere con un confronto numerico, ad esempio ord($c) >= 48 && ord($c) <= 57 per verificare che $c sia una cifra.

Funzioni correlate

  • chr() — l'inversa: restituisce il carattere per un dato valore ASCII/byte.
  • strlen() — il numero di byte in una stringa, utile per scorrere i caratteri.
  • str_split() — suddivide una stringa in un array di caratteri.
  • substr() — estrae una parte di una stringa.
  • bin2hex() — visualizza i byte grezzi di una stringa in formato esadecimale.

Esercitazione

Pratica
Cosa fa la funzione ord() in PHP?
Cosa fa la funzione ord() in PHP?
Was this page helpful?