PHP 8.2.0 RC3 available for testing


(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

ctype_alnumVérifie qu'une chaîne est alphanumérique


ctype_alnum(mixed $text): bool

ctype_alnum() vérifie si tous les caractères de la chaîne text sont des lettres et des chiffres.

Liste de paramètres


La chaîne testée.


Si un entier dans l'intervalle -128 et 255 inclus est fourni, il sera interprété comme la valeur ASCII d'un seul caractère (les valeurs négatives se verront ajouter 256 afin d'autoriser les caractères dans l'intervalle ASCII étendue). Tout autre entier sera interprété comme une chaîne de caractères contenant les décimales de l'entier.


À partir de PHP 8.1.0, passer un argument différent d'une chaîne est obsolète. À l'avenir, l'argument sera interprété comme une chaîne de caractères au lieu d'un point de code ASCII. Selon le comportement souhaité, l'argument doit être transtypé en chaîne de caractères ou un appel explicite à chr() doit être effectué.

Valeurs de retour

Retourne true si tous les caractères de text sont soit des lettres, soit des chiffres, false sinon. Lorsque appelé avec une chaîne vide, le résultat sera toujours false.


Exemple #1 Exemple avec ctype_alnum() (en utilisant les locales par défaut)

= array('AbCd1zyZ9''foo!#$bar');
foreach (
$strings as $testcase) {
  if (
ctype_alnum($testcase)) {
"La chaîne $testcase contient des chiffres ou des lettres.\n";
  } else {
"La chaîne $testcase ne contient pas que des chiffres ou des lettres.\n";

L'exemple ci-dessus va afficher :

La chaîne AbCd1zyZ9 contient des chiffres ou des lettres.
La chaîne foo!#$bar ne contient pas que des chiffres ou des lettres.

Voir aussi

add a note

User Contributed Notes 4 notes

thinice at gmail dot com
13 years ago
ctype_alnum() is a godsend for quick and easy username/data filtering when used in conjunction with str_replace().

Let's say your usernames have dash(-) and underscore(_) allowable and alphanumeric digits as well.

Instead of a regex you can trade a bit of performance for simplicity:

= 'my_username01';
$aValid = array('-', '_');

ctype_alnum(str_replace($aValid, '', $sUser))) {
'Your username is not properly formatted.';
marcelocamargo at linuxmail dot org
6 years ago
It is also important to note that the behavior of `ctype_alnum` differs according to the operating system. For UNIX-based operating system, if you pass a value that is not a string (or an overloaded object), independently of the value, it will always result in false. However, if we do the same on Windows, using, for example, -1 as literal (a minus and a number greater than 0), we'll have true as result.

<?php var_dump(ctype_alnum(-1));
// UNIX: bool(false)
// Windows: bool(true)
9 years ago
Quicktip: If ctype is not enabled by default on your server, replace ctype_alnum($var) with preg_match('/^[a-zA-Z0-9]+$/', $var).
12 years ago
Just for the record, Gentoo doesn't include this function by default. You'll have to recompile PHP with the "ctype" USE flag.
To Top