ctype_alnum

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

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

Описание

ctype_alnum(mixed $text): bool

Проверяет, состоит ли переданная строка (string) text только из буквенно-цифровых символов.

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

text

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

Замечание:

Функция интерпретирует целое число (int) как ASCII-значение одного символа, если передали целое число в диапазоне между -128 и 255 включительно; к отрицательным значениям добавляется 256, чтобы разрешить символы из диапазона кодировки Extended ASCII. Остальные целые числа обрабатываются как строки, которые содержат десятичные цифры целого числа.

Внимание

Начиная с PHP 8.1.0 передача нестроковых аргументов устарела. В будущем аргумент вместо ASCII-кода будет интерпретироваться как строка. В зависимости от предполагаемого поведения аргумент либо преобразовывают в строку (string), либо вызывают функцию chr().

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

Возвращает true, если каждый символ в строке text — это буква или цифра, иначе false. При вызове с пустой строкой результатом всегда будет 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 не состоит только из букв и цифр.

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

  • ctype_alpha() - Проверяет буквенные символы
  • ctype_digit() - Проверяет цифровые символы
  • setlocale() - Устанавливает региональные настройки
  • IntlChar::isalnum() - Проверяет, относится ли кодовая точка к буквенно-цифровым символам

Добавить

Примечания пользователей 3 notes

up
98
thinice at gmail dot com
15 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
11
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)
up
20
Anonymous
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).
To Top