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.';
}
?>
ctype_alnum
(PHP 4 >= 4.0.4, PHP 5)
ctype_alnum — Chequear posibles caracteres alfanuméricos
Descripción
bool ctype_alnum
( string
$text
)
Chequea si todos los caracteres en la string entregada,
texto, son alfanuméricos.
Parámetros
-
text -
La cadena de prueba.
Valores devueltos
Devuelve TRUE si cada caracter de texto es
o bien uno letra o un dígito, FALSE de lo contrario.
Ejemplos
Ejemplo #1 Un ejemplo de ctype_alnum() (usando la localización predeterminada)
<?php
$cadenas = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($cadenas as $caso_prueba) {
if (ctype_alnum($caso_prueba)) {
echo "La cadena $caso_prueba consiste completamente de letras o dígitos.\n";
} else {
echo "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.
Notas
Nota:
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.
Ver también
- ctype_alpha() - Chequear posibles caracteres alfabéticos
- ctype_digit() - Chequear posibles caracteres numéricos
- setlocale() - Establecer la información de la configuración regional
thinice at gmail dot com ¶
3 years ago
Rory ¶
3 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.
