<?php /** * 遮挡手机号码中间4~7位数字 * 说明:手机号码中间4~7位数字比较敏感,代表地区编码(即归属地省份和城市)。 * * @param string $mobile 手机号码 * @return string 遮挡中间4~7位数字后的手机号码 */ function mobile_mosaic($mobile) { return substr_replace($mobile, '****', 3, 4); } /** * 遮挡身份证号码 * 说明①:身份证号码遮挡哪几位数字需要根据保密需求来决定,并没有统一的标准,如果想绝对安全就应该全部遮挡。 * 说明②:一般来说建议遮挡最后四位,因为这四位数字无法根据前面的14位数字反推,所以遮挡住了保密性更好。 * 说明③:火车票和法院公布失信被执行人都是遮挡出生月日。 * * @param string $idno 身份证号码 * @param int $start 起始位数(从0开始编号) * @param int $length 遮挡长度 * @return string 遮挡后的身份证号码 */ function idno_mosaic($idno, $start = null, $length = null) { $start = $start === null ? 0 : $start; $length = $length === null ? 18 : $length; return substr_replace($idno, str_repeat('*', $length), $start, $length); } /** * 遮挡邮箱地址 * 说明:遮挡登录名最后4个字母,主机名部分不遮挡。 * * @param string $email 邮箱地址 * @return string 遮挡后的邮箱地址 */ function email_mosaic($email) { list($login, $host) = explode('@', $email); $length = strlen($login); if ($length > 4) { $login = substr($login, 0, $length - 4) . '****'; } else { $login = str_repeat('*', $length); } return "{$login}@{$host}"; } /** * 遮挡用户名 * 说明:遮挡用户名最后4个字母。 * * @param string $username 用户名 * @return string 遮挡后的用户名 */ function username_mosaic($username) { $length = strlen($username); if ($length > 4) { return substr($username, 0, $length - 4) . '****'; } return str_repeat('*', $length); } // 遮挡手机号码中间4~7位数字 $mobile = '18812345678'; echo "{$mobile} => " . mobile_mosaic($mobile) . PHP_EOL; // 18812345678 => 188****5678 $idno = '532527199811192952'; // 遮挡身份证号码(全部数字) echo "{$idno} => " . idno_mosaic($idno) . PHP_EOL; // 532527199811192952 => ****************** // 遮挡身份证号码(出生月日) echo "{$idno} => " . idno_mosaic($idno, 10, 4) . PHP_EOL; // 532527199811192952 => 5325271998****2952 // 遮挡身份证号码(最后四位) echo "{$idno} => " . idno_mosaic($idno, 14, 4) . PHP_EOL; // 532527199811192952 => 53252719981119**** // 遮挡身份证号码(只显示头尾的数字) echo "{$idno} => " . idno_mosaic($idno, 1, 16) . PHP_EOL; // 532527199811192952 => 5****************2 // 遮挡邮箱地址 $email = 'manong@domain.com'; echo "{$email} => " . email_mosaic($email) . PHP_EOL; // manong@domain.com => ma****@domain.com // 遮挡用户名 $username = 'manong'; echo "{$username} => " . username_mosaic($username) . PHP_EOL; // manong => ma****
Copyright © 2024 码农人生. All Rights Reserved