天天看点

银行卡号每4位加空格,13到16位用*表示

1、调用

$this->strreplace('1111111111111');           

2、执行方法 

public function strreplace($str, $startlen = 12, $endlen = 3) {
        $repstr = "";
        if (strlen($str) < ($startlen + $endlen+1)) {
            return $str;
        }
        $count = strlen($str) - $startlen - $endlen;
        for ($i = 0; $i < $count; $i++) {
            $repstr.="*";
        }
        $str =  preg_replace('/(\d{' . $startlen . '})\d+(\d{' . $endlen . '})/', '${1}' . $repstr . '${2}', $str);
        $ns = [4,9,14,19];
        for ($i=0;$i<4;$i++){
            $str = $this->str_insert($str,$ns[$i],' ');
        }
        return $str;
    }
           

3、字符中插入字符串方法 

public function str_insert($str, $i, $substr)
    {
        $startstr = '';
        $laststr = '';
        for($j=0; $j<$i; $j++){
            $startstr .= $str[$j];
        }
        for ($j=$i; $j<strlen($str); $j++){
            $laststr .= $str[$j];
        }
        $str = ($startstr . $substr . $laststr);
        return $str;
    }