intval边界值

       一. intval() 和 (int) 

            在php中,intval()方法与(int)一样能把字符串格式转成整形,两种方式没什么区别。

      二. 边界值

           在代码中我将接收的手机号码用intval()转成整形,发现返回的整形数据都变成一个值:

var_dump(intval('13800138000'));//  int 2147483647

           之前从来没发生过这种事情,为何intval调皮了,于是查了一下intval(),发现这个值是int的边界值。

             1.在32位的系统环境下,intval边界值是-21474836482147483647;

             2.在64位的系统环境下,intval边界值是-9223372036854775808到9223372036854775807;

           仔细地回想了一下,之前一直在64位系统下开发,11位的手机号码并不超过其边界值,所以没注意过这个问题,而现在用着的是32位系统,本地一玩就出问题了,涨姿势。

         考虑了一下,发现id之类的一些不超过2147483647的数据用intval()还是不错的,若是长一些的数字如qq号码,手机号码等还是得用其他方法获取好些,正则式取数值:       

function getNum($str, $default = 0){
    return preg_match('/[\d]+/', $str, $int) ? $int[0]: $default;
}
$str = '13800138000';
var_dump(getNum($str)); //string '13800138000' (length=11)

        只要能解决,用什么方式都是可以的。

转载于:https://my.oschina.net/jiec/blog/350333

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值