PHP正则表达式实战

       今天分享两个PHP的正则表达式实际案例,大家仔细理解,多多练习,很轻松就可以掌握了!

       案例一:在字符串"111-222-444dkg123-444-666sdl666-777-888fkk"中,找出xxx-yyy-zzz这样的字符格式;

 分析:很明显就是匹配出"111-222-444"和"666-777-888"这样的字符式,因此肯定是用正则表达式,代码如下:

            $str = '111-222-444dkg123-444-666sdl666-777-888fkk';

            // \d:就是表示数字0-9;而加上(),则是表示子表达式的意思;\1:表示就是第一个子表达式的值

            // 比如匹配出的第一个数字是1,那么\1的值就是1,而{2}则表示子表达式的值重复两次,即"11"

            // 多说一句:这里最好用单引号,因为用双引号有时候会出现莫名其妙的错误!

            $reg = '/(\d)\1{2}-(\d)\2{2}-(\d)\3{2}/i';

            // 正则匹配出的所有结果,都存放在$res数组变量中,只要遍历数组即可;

            preg_match_all($reg, $str ,$res);

 

       案例二:计算字符串"dkfSd调9皮dfdkUEDf谢小姐djf88sddfk"中,汉字,英文各有几个?

       // 注意:计算汉字时,首先声明u,即用utf8编码,然后范围是16进制的4e00-9fa5

       汉字:$reg = '/[\x{4e00}-\x{9fa5}]/u';

       英文:$reg2 = '/[a-zA-Z]/';

       然后都是通过preg_match_all方法,计算出$res[0]数组的大小count即可!


       最后多说一句,案例一中的子表达式,也常用在伪静态.htaccess中,原理是一模一样的,区别在于那里面的\1就

换成了$1,改天重点分析一下。

       大家可以关注我的微信公众号:iwork,我会每天推送一篇原创文章,让大家都能有所收获!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值