简介

该扩展所提供的函数用来检测 在当前的区域设定下,一个字符或者字符串 是否仅包含指定类型的字符。

当使用整数作为参数调用这些函数的时候, 这些函数的行为和 C 语言(ctype.h) 中的对应函数一样。 也就是说,如果传入了小于 256 的整数参数,它会把这个整数当做 ASCII 码值, 来检测对应字符是否符合要求(数值检测的 ASCII 值范围为 0x30-0x39)。 如果传入的参数介于 -128 和 -1 之间(含 -128 和 -1),它会先将其加上 256,然后再进行检测。

当传入参数为字符串的时候,它会对字符串中的每个字符进行检测, 仅当字符串中的每个字符都符合指定条件的情况下才会返回 TRUE。 在 PHP 5.1 之前的版本中,如果传入空字符串总是会返回 TRUE, 从 PHP 5.1 开始,传入空字符串总是会返回 FALSE。

传入除整数和字符串之外的参数 会立即返回 FALSE。

需要提醒的是,如果可以满足需求,请优先考虑使用 ctype 函数, 而不是正则表达式或者对应的 "str_" 和 "is_" 函数。 因为 ctype 使用的是原生 C 库,所以会有明显的性能优势。

函数

ctype_alnum — 做字母和数字字符检测
ctype_alpha — 做纯字符检测
ctype_cntrl — 做控制字符检测
ctype_digit — 做纯数字检测
ctype_graph — 做可打印字符串检测,空格除外
ctype_lower — 做小写字符检测
ctype_print — 做可打印字符检测
ctype_punct — 检测可打印的字符是不是不包含空白、数字和字母
ctype_space — 做空白字符检测
ctype_upper — 做大写字母检测
ctype_xdigit — 检测字符串是否只包含十六进制字符

## 扩展

ctype_digit() 与 is_numeric() 的区别

<?php

$numeric_string = '42';
$integer        = 42;

ctype_digit($numeric_string);  // true
ctype_digit($integer);         // false (ASCII 42 is the * character)

is_numeric($numeric_string);   // true
is_numeric($integer);          // true
?>

这个函数的参数要求是一个 string 这一点是非常有用的,因此当你传入一个 integer 的参数也许不能得到期望的结果。然后,同样需要注意HTML表单将会返回数字字符串而不是一个整型。

来源

http://php.net/manual/zh/book.ctype.php