外卖订单或者物流快递单为保护个人隐私,需要隐藏手机号中间四位,真实姓名需要隐藏名的部分。

话不多说直接上代码:

隐藏真实手机号、电话

    /**
     * 隐藏手机号
     * @param $phone
     * @return string|string[]|null
     */
    function hidtel($phone){
        $IsWhat = preg_match('/(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)/i',$phone); //固定电话
        if($IsWhat == 1){
            return preg_replace('/(0[0-9]{2,3}[\-]?[2-9])[0-9]{3,4}([0-9]{3}[\-]?[0-9]?)/i','$1****$2',$phone);
        }else{
            return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);
        }
    }

隐藏真实姓名

    /**
     * 隐藏姓名
     * @param $name
     * @return string
     */
    function hidname($name) {
        $cnt = mb_strlen($name) - 1;
        $res = mb_substr($name, 0, 1);
        for ($i=0; $i<$cnt; $i++) {
            $res .= '*';
        }
        return $res;
    }

很明显,使用正则匹配替换的是别人写的,下面是自己拼凑的 OωO 。