W3docs

ord()

Notre article porte sur la fonction PHP ord(), qui retourne la valeur ASCII du premier caractère d'une chaîne. Utile pour manipuler les codes de caractères.

La fonction PHP ord() retourne la valeur en octets (0–255) du premier caractère d'une chaîne. Pour du texte ASCII simple, il s'agit du code ASCII du caractère — par exemple, 'A' donne 65. C'est l'inverse de chr(), qui convertit un nombre en caractère.

Cette page couvre la syntaxe de ord(), son comportement avec les chaînes que vous lui passerez, le piège multibyte qui surprend la plupart des gens, ainsi que les cas pratiques où convertir un caractère en code numérique est réellement utile.

Syntaxe

ord(string $character): int

ord() prend un seul argument, la chaîne à inspecter, et retourne un entier. Seul le premier caractère est examiné — le reste de la chaîne est ignoré.

ParamètreDescription
$characterLa chaîne dont vous souhaitez obtenir la valeur numérique du premier caractère (octet).

Exemple de base

php— editable, runs on the server

Résultat :

72

72 est le code de "H", premier caractère de "Hello". Comme seul le premier caractère compte, ord('ABC') et ord('A') retournent tous les deux 65.

Valeurs de retour courantes

Voici les codes que vous rencontrerez le plus souvent lors du traitement de texte :

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

Résultat :

65
97
48
32
10
0

Notez la dernière ligne : passer une chaîne vide ne génère pas d'erreur — ord('') retourne simplement 0.

Le piège multibyte

ord() travaille sur des octets, pas sur des caractères Unicode. Un caractère hors de la plage ASCII de base (comme é, , ou un emoji) est stocké sur plusieurs octets en UTF-8, et ord() ne retourne que la valeur du premier octet :

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

Résultat :

195

Si vous avez besoin du vrai point de code Unicode d'un caractère multibyte, utilisez mb_ord() (de l'extension mbstring) à la place :

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

Pourquoi utiliser ord()

Convertir un caractère en nombre permet d'effectuer des calculs arithmétiques et des comparaisons qui seraient délicats à réaliser sur le caractère lui-même.

Changer la casse manuellement. Les lettres majuscules et minuscules sont exactement à 32 d'écart dans la table ASCII, vous pouvez donc changer la casse en ajoutant ou soustrayant 32 avec ord() et chr() :

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

Résultat :

a

Inspecter chaque caractère d'une chaîne. Bouclez avec strlen() et indexez la chaîne pour voir le code de chaque caractère — pratique pour déboguer des problèmes d'encodage ou construire un chiffrement simple :

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

Résultat :

P=80 H=72 P=80 

Valider les entrées. Étant donné que les lettres et les chiffres occupent des plages connues, vous pouvez tester la catégorie d'un caractère par une comparaison numérique, par exemple ord($c) >= 48 && ord($c) <= 57 pour vérifier que $c est un chiffre.

Fonctions associées

  • chr() — l'inverse : retourne le caractère correspondant à une valeur ASCII/octet donnée.
  • strlen() — le nombre d'octets dans une chaîne, utile pour itérer sur les caractères.
  • str_split() — découpe une chaîne en tableau de caractères.
  • substr() — extrait une partie d'une chaîne.
  • bin2hex() — affiche les octets bruts d'une chaîne en hexadécimal.

Pratique

Pratique
Que fait la fonction ord() en PHP ?
Que fait la fonction ord() en PHP ?
Was this page helpful?