CakeFest 2017 NYC, the Official CakePHP Conference


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

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


bool ctype_alnum ( string $text )

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.

Valeurs de retour

Retourne TRUE si tous les caractères de text sont soit des lettres, soit des chiffres, FALSE sinon.


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.



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.

Voir aussi

add a note add a note

User Contributed Notes 4 notes

thinice at gmail dot com
7 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
1 year 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)
4 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).
7 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