+ 复制到我的接口(请先登录,支持在线开发API)    预览接口发布效果    查看开发教程

<?php


/**
 * 数据脱敏接口 PHP接口源代码
 *
 * 接口说明:PHP 数据脱敏 支持指定类型及自定义规则脱敏,支持:1姓名,2出生日期,3手机号,4身份证,5银行卡号,6电子邮箱
 *
 * 最后修改:2024-10-12 17:11:01
 *
 * @author dogstar www.yesapi.cn
 *
 * 来源:https://open.yesapi.cn/apicode/8877.html
 */

function ($params$di) {
    
// 字符串转数组(支持中文英文混合字符串)
    
function stringToArray($string$charset "utf-8")
    {
        
$length mb_strlen($string'utf-8');
        
$stringArray = [];
        for (
$i 0$i $length$i++) {
            
$stringArray[] = mb_substr($string$i1'utf-8');
        }
        return 
$stringArray;
    }

    
$string $params['string']; 
    
    
$type 3$index = []; $replace "*";
    
    
// [姓名]     前1或2  只显示姓,支持单姓和复姓<例子:欧阳**,王**>
    // [出生日期] 前2     只显示年份,支持任意日期格式<例子:19**-**-**,19******,1990/**/**>
    // [手机号]   前3后4  手机号只显示网络识别号+用户号码<例子:137****4574>
    // [身份证]   前6后3  隐藏出生年份后两位+月+日 <例子:41032420******7191>
    // [银行卡号] 前6后4  其他用星号隐藏每位1个星号<例子:6222600**********1234>
    // [电子邮箱] @之前   邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示<例子:g**@163.com>

    // [地址] 只显示到地区,不显示详细地址;我们要对个人信息增强保护<例子:北京市海淀区****>(后续更新)
    
if (!$type && !count($index)) {
        return 
$string;
    }

    
$strArray stringToArray($string); // 字符串转数组
    
if (!is_array($strArray) || $length = !count($strArray)) {
        return 
$string;
    }

    
// 姓名
    
if ($type == 1) {
        
$digit count($strArray) > 0;
        foreach (
$strArray as $k => $v) {
            
$k $digit && array_push($index$k);
        }
    }

    
$number 0;
    
// 出生日期
    
if ($type == 2) {
        foreach (
$strArray as $k => $v) {
            if (
is_numeric($v)) {
                
$number++;
                (
$number == || $number == || $number == || $number == || $number == || $number == 8) && array_push($index$k);
            }
        }
    }

    
// 手机号
    
if ($type == 3) {
        
$len strpos($string'+86') !== false mb_strlen('+86''utf-8') : 1// 判断是否+86
        
foreach ($strArray as $k => $v) {
            if (
is_numeric($v)) {
                
$number++;
                (
$number == $len || $number == $len || $number == $len || $number == $len) && array_push($index$k);
            }
        }
    }

    
$type == && $index = [8910111213]; // 身份证

    
$type == && $index = [678910111213]; // 银行卡

    // 邮箱
    
if ($type == 6) {
        foreach (
$strArray as $k => $v) {
            
// if (!$k) continue;
            
if ($v == "@") break;
            
array_push($index$k);
        }
    }

    if (
$type || !count($index)) {
        return 
$string;
    }
    foreach (
$index as $v) {
        
$strArray[$v] = $replace;
    }
    return 
implode(""$strArray) ?? "";

}
在线运行   


回到顶部 ↑