ScotlandPHP

ctype_alnum

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

ctype_alnumПроверяет на наличие буквенно-цифровых символов

Описание

bool ctype_alnum ( string $text )

Проверяет, все ли символы в переданной строке text являются буквенно-цифровыми.

Список параметров

text

Проверяемая строка.

Возвращаемые значения

Возвращает TRUE, если каждый символ в строке text является буквой или цифрой, иначе возвращается FALSE.

Примеры

Пример #1 Пример использования ctype_alnum() (с использованием локали по умолчанию)

<?php
$strings 
= array('AbCd1zyZ9''foo!#$bar');
foreach (
$strings as $testcase) {
    if (
ctype_alnum($testcase)) {
        echo 
"Строка $testcase состоит только из букв и цифр.\n";
    } else {
        echo 
"Строка $testcase не состоит только из букв и цифр.\n";
    }
}
?>

Результат выполнения данного примера:

Строка AbCd1zyZ9 состоит только из букв и цифр.
Строка foo!#$bar не состоит только из букв и цифр.

Примечания

Замечание:

Если передан integer в диапазоне между -128 и 255 включительно, то он будет обработан как ASCII-код одного символа (к отрицательным значениям будет прибавлено 256 для возможности представления символов из расширенного диапазона ASCII). Любое другое целое число будет обработано как строка, содержащая десятичные цифры этого числа.

Смотрите также

  • ctype_alpha() - Проверяет на наличие буквенных символов
  • ctype_digit() - Проверяет на наличие цифровых символов в строке
  • setlocale() - Устанавливает настройки локали

add a note add a note

User Contributed Notes 4 notes

up
59
thinice at gmail dot com
8 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:

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

if(!
ctype_alnum(str_replace($aValid, '', $sUser))) {
    echo
'Your username is not properly formatted.';
}
?>
up
2
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)
up
8
Anonymous
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).
up
2
Rory
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