不使用正则表达式对英文数字等相关字符进行正则校验一般情况下,我们都会使用正则表达式来完成此类功能,但是PHP其实已经为我们准备了几个函数来处理此类情况。ctype_相关函数//数字和字母,不包括浮点数,[A-Za-z0-9]if(ctype_alnum($input)){echo$input,'是英文数字的组合!',PHP_EOL;}//英文字母,[A-Za-z]if(ctype_alpha($input)){echo$input,'是英文字母!',PHP_EOL;}//数字字符,不包括浮点数、负数(无符号正整数)if(ctype_digit($input)){echo$input,'是数字字符!',PHP_EOL;}以上三个函数分为数字+字母、纯字母、纯数字三种字符类型的判断。没错,我们就是在用ctype_开头的这些函数来做这种判断的。其中,唯一需要注意的是,ctype_digit()进行数字判断时,returntrue只能是无符号、不带小数点的正整数,也就是说负数和小数不能通过该函数的判断.我们还将在文章末尾查看ctype_digit()和is_numeric()之间的区别。当然ctype_相关的函数不止这三个,还有很多,我们再看一组。//小写字母if(ctype_lower($input)){echo$input,'是小写字母字符!',PHP_EOL;}//大写if(ctype_upper($input)){echo$input,'是大写字符!',PHP_EOL;}//所有可打印字符if(ctype_print($input)){echo$input,'是可打印字符!',PHP_EOL;}//所有字符都是可见的,除了空格或格式控件,它们是不可见的if(ctype_graph($input)){echo$input,'是一个可打印的字符,除了空白字符!',PHP_EOL;}//不包含空格、字母和数字的可打印字符英文标点类if(ctype_punct($input)){echo$input,'是不包含空格、字母和数字的可打印字符数字!',PHP_EOL;}ctype_lower()和ctype_upper()用于判断字符串中的内容是全部小写还是大写。请记住,要满足条件,字符串中的所有内容必须是大写或小写,如果有一个字母不是,则不能返回true。当然这两个判断也必须包含英文字母,不能有数字,空格之类的。ctype_print()是判断是否为可打印内容。什么是可打印内容?这就是echo、print等可以输出的内容,您可以在屏幕上看到。ctype_graph()是除空白字符外的可打印字符。什么是空白字符?\n、\t等制表符和我们正常的空格都是空白字符。ctype_punct()可以简单理解为标点符号,整个字符串由标点符号组成,不包含空白内容。//\n\t\rlikeif(ctype_cntrl($input)){echo$input,'是格式控制符!',PHP_EOL;}//空格if(ctype_space($input)){echo$input,'是一个空格字符!',PHP_EOL;}//十六进制AB10BC99if(ctype_xdigit($input)){echo$input,'是十六进制字符!',PHP_EOL;}tabs好像不是很流行,不用怕,ctype_cntrl()就是用来判断整个字符是否由这些tabs组成的。ctype_space()从名字就可以看出是否是由空格组成的字符串。ctype_xdigit()是我们的最后一个ctype_函数。从名字就可以看出它是判断是否是十六进制字符串。ctype_digit()和is_numeric()的区别这两个函数都是判断参数是否为数字,但是它们有一个很大的区别,ctype_digit()只针对字符串。也就是说,用来判断字符串中的内容是否为数字。如果直接给它一个普通的数字类型,它仍然会返回false,它会认为数字类型的内容不是“字符串”类型的数字。//ctype_digit和is_numeric的区别$numeric_string='42';$整数=42;echoctype_digit($numeric_string),PHP_EOL;//trueechoctype_digit($integer),PHP_EOL;//false(ASCII42是*字符)echois_numeric($numeric_string),PHP_EOL;//trueechois_numeric($integer),PHP_EOL;//true总结是否是一组方便的函数。但其实现在使用正则化也很方便,而且正则化的组合更加多样,我们的可控范围更大,所以在这种情况下正则化仍然是首选。当然,你越灵活,就越容易出错。如果在正则化中遗漏了一点内容,没有进行详细的测试,也可能造成严重的后果。所以,在日常工作中,具体的选择还是要靠自己。这里只是给大家科普一下。使用哪种方法的决定权仍然在我们自己手中。另外需要注意的是,这组ctype_函数不支持中文,只支持英文、数字、英文符号等判断。测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/202003/source/%E4%B8%8D%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%BF%9B%E8%A1%8C%E8%8B%B1%E6%96%87%E6%95%B0%E5%AD%97%E7%AD%89%E7%9B%B8%E5%85%B3%E5%AD%97%E7%AC%A6%E7%9A%84%E8%A7%84%E5%88%99%E6%A0%A1%E9%aa%8c.php参考文档:https://www.php.net/manual/zh/ref.ctype.php=======各媒体平台可搜索【硬核项目经理】
