字符串转整数

<?php
/**
 * 字符串转整数
 *
 * User: hihone
 * Date: 2019/2/2
 * Time: 10:58
 * Description:
 *  首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。
 * 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;
 * 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
 * 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。
 * 注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。
 * 在任何情况下,若函数不能进行有效的转换时,请返回 0。
 * 说明:
 * 假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231,  231 − 1]。
 * 如果数值超过这个范围,qing返回  INT_MAX (231 − 1) 或 INT_MIN (−231) 。
 */

function myAtoi($str)
{
    $str = trim($str);
    if (empty($str)) return 0;
    $reg    = '/^([-|+]?)[0-9][\d]*/';
    $number = preg_match_all($reg, $str, $match);
    if ($number) {
        $xx     = 1;
        $result = $match[0][0];
        if ($result < 0) $xx = -1;
        $result  = ltrim($result, '0');
        $result  = ltrim($result, '-0');
        $result  = intval($result) * $xx;
        $int_max = pow(2, 31) - 1;
        $int_min = pow(-2, 31);
        if ($result > $int_max) return $int_max;
        if ($result < $int_min) return $int_min;

        return $result;
    }

    return 0;
}

$str = '+0023432423afdafsdfsf234324';
echo myAtoi($str);

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值