PHP 判断字符串长度 判断纯中文 的两种方法比较

1.判断字符串长度

以 判断字符串长度在2-30个字符 为一个标准,因为在实际中(现在的公司)控制网页输入字符串字段就是规定2-30个字符..._(:з」∠)_

method1:用strlen或者mb_strlen的php内置函数

//    method1
    $str_len = strlen($str_3);
    if($str_len<2||$str_len>30){

    }else{

    }

method2:用强大的正则表达式 (\S表示可见元素)

    //method2
    if(!preg_match('/^(\S){2,30}$/',$str_3)){

    }else{

    }

 

既然有两种方法就有对比嘛...所以就分别测试了一下运行速度

以下是用str1,str2,str3(字符串的长度为1,10,40)分别测试10次循环1000次的结果,单位:秒(s)

好啦重点是最下面一行,可以看出method2/method1的速度分别为9倍,13倍,21倍,看来method1比较快而且随着字符串长度的增加,method1速度并没有显著增加,而method2的却增加了挺多时间(至于是不是线性,我也就懒得理啦~)所以method1的优势更能体现。

所以:method1取胜,好评!

 

2.判断是否纯中文

method1:嗯method1也是用strlen和mb_strlen,不过巧妙的是 用这两个函数对中文的倍数关系,因为strlen认为中文是3个字符,但是设置字符集为utf8的mb_strlen认为中文是1个字符。

    //method1
    $ch_1_mb = mb_strlen($ch_4,'utf8');
    $ch_1_len = strlen($ch_1);
    if($ch_1_mb*3 == $ch_1_len){

    }else{

    }

method2:也是用无所不能的正则表达式...

    //method2
    if(!preg_match('/^[\x{4e00}-\x{9fa5}]+$/u',$ch_4)){

    }else{

    }

 

然后就是性能比较啦,以下用ch_1~4  4个字符串(复杂和难度依次增)来测试的结果,单位:秒(s)

这次的结果反而不同了耶....最后一行显示method1/method2的速度比为4~2倍不等,那就是method2比较高效,再细看每一项,发现method1的每个字符串的平均执行时间都差不多,method2就时高时低了(不知道是我电脑的问题 or php对某些字符的处理比较慢?),反正就是method2正则表达式比较高效啦!

 

如有错误,恳请指点。_(:з」∠)_,谢谢观看。

转载于:https://my.oschina.net/mcstudio/blog/716653

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值