downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ctype_alpha> <Fonctions Ctype
[edit] Last updated: Fri, 10 Feb 2012

view this page in

ctype_alnum

(PHP 4 >= 4.0.4, PHP 5)

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

Description

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. Elle retourne FALSE dans le cas contraire. En terme de langage C, les lettres sont [A-Za-z].

Liste de paramètres

text

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.

Exemples

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

<?php
$strings 
= array('AbCd1zyZ9''foo!#$bar');
foreach (
$strings as $testcase) {
  if (
ctype_alnum($testcase)) {
    echo 
"La chaîne $testcase contient des chiffres ou des lettres.\n";
  } else {
    echo 
"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.

Notes

Note:

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



ctype_alpha> <Fonctions Ctype
[edit] Last updated: Fri, 10 Feb 2012
 
add a note add a note User Contributed Notes ctype_alnum
Rory 07-Dec-2009 05:42
Just for the record, Gentoo doesn't include this function by default. You'll have to recompile PHP with the "ctype" USE flag.
Josip Rodin 12-Aug-2009 11:13
There doesn't actually seem to be a performance loss compared to using regexes. For example:

<?php        
$sUser
= 'my_username01';

$time_start1 = microtime(true);
$aValid = array('-', '_');
$ret1 = ctype_alnum(str_replace($aValid, '', $sUser));
$time_end1 = microtime(true);
$time1 = $time_end1 - $time_start1;
printf("Checked it with ctype_alnum and got %d in %.10f seconds\n", print_r($ret1, true), $time1);

$time_start2 = microtime(true);
$ret2 = preg_match('/^[\w-]+$/', $sUser);
$time_end2 = microtime(true);
$time2 = $time_end2 - $time_start2;
printf("Checked it with preg_match  and got %d in %.10f seconds\n", print_r($ret2, true), $time2);

?>

This returns:

% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000379086 seconds
Checked it with preg_match  and got 1 in 0.0001120567 seconds
php ctype_alnum.php  0,01s user 0,01s system 84% cpu 0,024 total
% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000400543 seconds
Checked it with preg_match  and got 1 in 0.0001108646 seconds
php ctype_alnum.php  0,00s user 0,02s system 98% cpu 0,024 total
% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000391006 seconds
Checked it with preg_match  and got 1 in 0.0001142025 seconds
php ctype_alnum.php  0,02s user 0,01s system 98% cpu 0,024 total

ctype_alnum() seems to be consistently faster. I'm guessing that the preg engine initialization induces a bit of overhead.
thinice at gmail dot com 22-Jul-2009 04:46
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:

<?php
$sUser
= 'my_username01';
$aValid = array('-', '_');

if(!
ctype_alnum(str_replace($aValid, '', $sUser))) {
    echo
'Your username is not properly formatted.';
}
?>

 
show source | credits | sitemap | contact | advertising | mirror sites