PHP 8.4.1 Released!

ctype_alnum

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

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

Описание

ctype_alnum(mixed $text): bool

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

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

text

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

Замечание:

Если передано целое число (int) в диапазоне между -128 и 255 включительно, то оно будет обработано как ASCII-код одного символа (к отрицательным значениям будет прибавлено 256, чтобы функция могла представить символы из расширенного диапазона 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