ctype_alnum

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

ctype_alnum检查字符是否为字母数字

描述

ctype_alnum(混合 $text): 布尔值

检查提供的 字符串 text 中的所有字符是否都是字母数字。

参数

text

要测试的字符串。

注意:

如果提供了一个介于 -128 到 255(含)之间的 整数,它将被解释为单个字符的 ASCII 值(负值添加 256 以允许扩展 ASCII 范围内的字符)。任何其他整数都将被解释为包含整数十进制数字的字符串。

警告

从 PHP 8.1.0 开始,传递非字符串参数已弃用。将来,该参数将被解释为字符串而不是 ASCII 代码点。根据预期的行为,该参数应该要么强制转换为 字符串,要么明确调用 chr()

返回值

如果 text 中的每个字符都是字母或数字,则返回 true,否则返回 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";
}
}
?>

上面的示例将输出

The string AbCd1zyZ9 consists of all letters or digits.
The string foo!#$bar does not consist of all letters or digits.

参见

添加注释

用户贡献注释 4 个注释

thinice at gmail dot com
15 年前
ctype_alnum() 与 str_replace() 结合使用时,是快速便捷的用户/数据过滤的救星。

假设您的用户名允许使用连字符 (-) 和下划线 (_) 以及字母数字。

您可以用一些性能换取简单性,而不是使用正则表达式

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

if(!
ctype_alnum(str_replace($aValid, '', $sUser))) {
echo
'您的用户名格式不正确。';
}
?>
marcelocamargo at linuxmail dot org
8 年前
同样重要的是要注意,`ctype_alnum` 的行为根据操作系统而有所不同。对于基于 UNIX 的操作系统,如果您传递的值不是字符串(或重载对象),无论值是什么,它都将始终导致 false。但是,如果我们在 Windows 上执行相同的操作,使用例如 -1 作为字面值(减号和大于 0 的数字),我们将得到 true 作为结果。

<?php var_dump(ctype_alnum(-1));
// UNIX: bool(false)
// Windows: bool(true)
匿名
11 年前
快速提示:如果您的服务器默认情况下未启用 ctype,请将 ctype_alnum($var) 替换为 preg_match('/^[a-zA-Z0-9]+$/', $var)。
Rory
14 年前
仅供记录,Gentoo 默认情况下不包含此函数。您需要使用“ctype” USE 标志重新编译 PHP。
To Top