PHP 开发者大会 日本 2024

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.

参见

添加注释

用户贡献的注释 3 条注释

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

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

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

<?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)。
To Top