ctype_alnum()
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
做字母和数字字符检测
说明
ctype_alnum(string $text): bool
检查提供的string,$text是否全部为字母和(或)数字字符。
参数
- $text
测试字符串。
返回值
如果$text中所有的字符全部是字母和(或者)数字,返回TRUE
否则返回FALSE
范例
A ctype_alnum()示例(使用默认的区域设置)
<?php $strings = array('AbCd1zyZ9', 'foo!#$bar'); foreach ($strings as $testcase) { if (ctype_alnum($testcase)) { echo "The string $testcase consists of all letters or digits.\n"; } else { echo "The string $testcase does not consist of all letters or digits.\n"; } } ?>
以上例程会输出:
The string AbCd1zyZ9 consists of all letters or digits. The string foo!#$bar does not consist of all letters or digits.
注释
Note:如果给出一个-128 到 255 之间(含)的整数,将会被解释为该值对应的ASCII字符(负值将加上 256 以支持扩展ASCII字符).其它整数将会被解释为该值对应的十进制字符串.
参见
ctype_alpha()
做纯字符检测ctype_digit()
做纯数字检测setlocale()
设置地区信息
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.'; } ?>
Quicktip: If ctype is not enabled by default on your server, replace ctype_alnum($var) with preg_match('/^[a-zA-Z0-9]+$/', $var).
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)
Just for the record, Gentoo doesn't include this function by default. You'll have to recompile PHP with the "ctype" USE flag.