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 — Verifica se os caracteres são alfanuméricos
Descrição
bool ctype_alnum
( string
$text
)
Verifica se todos os caracteres na string fornecida,
text, é alfanumérico. No padrão
C locale letras são [A-Za-z].
Parâmetros
-
text -
A string a ser testada.
Valor Retornado
Retorna TRUE se todos caracteres em text são
letra ou dígito, FALSE caso contrário.
Exemplos
Exemplo #1 Um exemplo da ctype_alnum() (usando o locale padrão)
<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
if (ctype_alnum($testcase)) {
echo "The string $testcase consists of all letters or digits.\n";
} else {
echo "The string $testcase does not consist of all letters or digits.\n";
}
}
?>
O exemplo acima irá imprimir:
The string AbCd1zyZ9 consists of all letters or digits. The string foo!#$bar does not consist of all letters or digits.
Veja Também
- ctype_alpha() - Verifica se os caracteres são alfabéticos
- ctype_digit() - Verifica se os caracteres são numéricos
- setlocale() - Define informações locais
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.
