我有一个需求,一串未知长度的数字,需要根据要求组合。举例:
1、把一串未知长度的数字按要求取出,要求:如果不是5或0就取两位,如果碰倒5或者0就多取一位,依次类推;
2、数字:156008 ,结果:156、6008;
3、数字:18655680903,结果18、86、6556、68、809、903;还请不吝赐教!谢谢!

解决方案 »

  1.   

    <?php
    /**
     *
     * 我有一个需求,一串未知长度的数字,需要根据要求组合。
     *
     * 举例:
     * 1、把一串未知长度的数字按要求取出,要求:如果不是5或0就取两位,如果碰倒5或者0就多取一位,依次类推;
     * 2、数字:156008 ,结果:156、6008;
     * 3、数字:18655680903,结果18、86、6556、68、809、903;
     */
    function demo1($str)
    {
        $data = [];    while (true) {
            // 当字符串长度等于2 直接退出循环
            if (strlen($str) < 2) {
                break;
            }        // 取最后
            if (strlen($str) == 2) {
                $data[] = $str;
                break;
            }        // 获取第二位
            // 如果不是5或0就取2位,如果碰倒5或者0,就+1
            $l = 2;        $lenth = strlen($str); // 字符串总长度        for ($i = 0; $i < $lenth; $i++) {
                $k = (int)$str[$i + 1];
                if ($k == 5 || $k == 0) {
                    $l++;
                    continue;
                } else {
                    break;
                }
            }
            $data[] = substr($str, 0, $l);        $str = substr($str, $l - 1);    }    return $data;
    }$str = "156008";
    $res = demo1($str);
    var_dump($res);$str = "18655680903";
    $res = demo1($str);
    var_dump($res);