php 脱敏技术

曾几何时有个脱敏需求,对用户名称进行脱敏处理,使用了如下代码

if($list[$i]['nickname']){
                if (ord($list[$i]['nickname'])>128){
                    $list[$i]['nickname'] = mb_convert_encoding(substr_replace(substr_replace($list[$i]['nickname'],'*',3,3),'*',4,3), 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');
                }else{
                    $list[$i]['nickname'] = mb_convert_encoding(substr_replace(substr_replace($list[$i]['nickname'],"*",1,1),"*",2,3), 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');
                }
            }

上线后发现用户真的是千奇百怪,导致出问题,于是有了如下这个方法进行封装更好的处理脱敏

function actionIndex($string, $start = 0, $length = 0, $re = '*'){
        if(empty($string) || empty($length) || empty($re)) return $string;
        $end = $start + $length;
        $strlen = mb_strlen($string);
        $str_arr = array();
        for($i=0; $i<$strlen; $i++) {
            if($i>=$start && $i<$end)
                $str_arr[] = $re;
            else
                $str_arr[] = mb_substr($string, $i, 1);
        }
        return implode('',$str_arr);
    }


//测试代码
function actionTest(){
        $name = '大幅ddddd';
        $mobile = '13817558198';

        $name = $this->actionIndex($name,1,2);
        $mobile = $this->actionIndex($mobile,3,4);

        var_dump($name);
        var_dump($mobile);
    }

效果很ok,如果有全局需求可以参考这个:PHP数据脱敏包: 数据脱敏工具,可以对特定的键按照配置进行数据脱敏,也就是替换操作。支持Composer。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值