php中如何实现不使用正则进行英文数字等相关字符的规则校验

发布时间:2021-12-29 17:12:19 作者:小新
来源:亿速云 阅读:155

这篇文章给大家分享的是有关php中如何实现不使用正则进行英文数字等相关字符的规则校验的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

 

不使用正则进行英文数字等相关字符的规则校验

在一些场景中,比如说注册登录的时候,我们会对用户名做一些限制,比如只能是数字和字母的组合。一般情况下,我们会使用正则表达式来完成这样的功能,不过,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() 进行数字判断时,返回 true 的情况只能是无符号、无小数点的正整数,也就是说负数和小数也是无法通过这个函数的判断的。我们在文章的最后还会看一下 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 \r 之类
if(ctype_cntrl($input)){
    echo $input, '是格式控制字符!', PHP_EOL;
}

// 空格
if(ctype_space($input)){
    echo $input, '是空格字符!', PHP_EOL;
}

// 16进制 AB10BC99
if(ctype_xdigit($input)){
    echo $input, '是十六进制字符!', PHP_EOL;
}
 

貌似制表符不是很受欢迎呀,不用怕,ctype_cntrl() 就是专门判断整个字符是不是由这些制表符组成的。

ctype_space() 从名字就可以看出,是不是由空格组成的字符串。

ctype_xdigit() 是我们最后一个 ctype_ 函数,从名字其实也能够看出来,它是判断是否是16进制字符串的。

 

ctype_digit() 与 is_numeric() 的区别

这两个函数都是判断参数是否为数字的,但是它们有一个很大的区别就是 ctype_digit() 仅针对字符串。也就是说它是用来判断字符串中的内容是否是数字的,如果直接给它一个普通的数字类型,那么它还是会返回 false 的,它会认为这个数字类型的内容不是一个“字符串”类型的数字。

// ctype_digit 与 is_numeric 的区别
$numeric_string = '42';
$integer        = 42;

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

echo is_numeric($numeric_string), PHP_EOL;   // true
echo is_numeric($integer), PHP_EOL;          // true
   

感谢各位的阅读!关于“php中如何实现不使用正则进行英文数字等相关字符的规则校验”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. PHP日期转星期(英文/数字)
  2. Java如何实现计算字符中的英文字母、空格、数字

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:Win8USB是如何一键制作Windows 8启动U盘

下一篇:Java和ABAP中的引用类型有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》