PHP Velho Oeste 2024


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

ctype_alnumChequear posibles caracteres alfanuméricos


ctype_alnum(mixed $text): bool

Chequea si todos los caracteres en la string entregada, texto, son alfanuméricos.



La cadena de prueba.


Si se proporciona un integer entre -128 y 255 inclusive, se interpreta como el valor ASCII de un simple caráter (a los valores negativos se le añade 256 para permitir caracteres en el rango ASCII Extendido). Cualquier otro entero se interpreta como una cadena que contiene los dígitos decimales del entero.


As of PHP 8.1.0, passing a non-string argument is deprecated. In the future, the argument will be interpreted as a string instead of an ASCII codepoint. Depending on the intended behavior, the argument should either be cast to string or an explicit call to chr() should be made.

Valores devueltos

Devuelve true si cada caracter de texto es o bien uno letra o un dígito, false de lo contrario. When called with an empty string the result will always be false.


Ejemplo #1 Un ejemplo de ctype_alnum() (usando la localización predeterminada)

= array('AbCd1zyZ9', 'foo!#$bar');
foreach (
$cadenas as $caso_prueba) {
if (
ctype_alnum($caso_prueba)) {
"La cadena $caso_prueba consiste completamente de letras o dígitos.\n";
} else {
"La cadena $caso_prueba no consiste completamente de letras o dígitos.\n";

El resultado del ejemplo sería:

La cadena AbCd1zyZ9 consiste completamente de letras o dígitos.
La cadena foo!#$bar no consiste completamente de letras o dígitos.

Ver también

add a note

User Contributed Notes 4 notes

thinice at gmail dot com
14 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
8 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)
11 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).
14 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