PHP隐藏部分字符串(如:姓名、用户名、身份证、IP、手机号等)
2025-09-30 08:45
PHP
161
0
0
0
标题录入
封面图
在 PHP 中,隐藏部分字符串(如姓名、用户名、身份证、IP、手机号等)是一种常见的安全或隐私保护操作。下面是一些常见字段的隐藏方法示例: --- ## 一、隐藏姓名 ### 示例: ```php function hideName($name) { $length = mb_strlen($name); if ($length <= 1) return '*'; $firstChar = mb_substr($name, 0, 1); $lastChar = mb_substr($name, -1); return $firstChar . str_repeat('*', $length - 2) . $lastChar; } echo hideName("张三"); // 输出:张*三 ``` --- ## 二、隐藏用户名 ### 示例: ```php function hideUsername($username) { $length = strlen($username); if ($length <= 2) return str_repeat('*', $length); $first = substr($username, 0, 1); $last = substr($username, -1); return $first . str_repeat('*', $length - 2) . $last; } echo hideUsername("zhangsan"); // 输出:z***an ``` --- ## 三、隐藏身份证号 ### 示例: ```php function hideIdCard($idcard) { if (strlen($idcard) < 15) return $idcard; return substr($idcard, 0, 6) . str_repeat('*', 8) . substr($idcard, -4); } echo hideIdCard("110101199003072316"); // 输出:110101******2316 ``` --- ## 四、隐藏 IP 地址 ### 示例: ```php function hideIP($ip) { $parts = explode('.', $ip); return $parts[0] . '.' . $parts[1] . '.*.*'; } echo hideIP("192.168.1.1"); // 输出:192.168.*.* ``` --- ## 五、隐藏手机号 ### 示例: ```php function hidePhone($phone) { if (strlen($phone) < 11) return $phone; return substr($phone, 0, 3) . '****' . substr($phone, -4); } echo hidePhone("13812345678"); // 输出:138****5678 ``` --- ## 六、通用隐藏函数(适用于多种类型) ```php function hideText($text, $showFirst = 1, $showLast = 1, $maskChar = '*') { $length = strlen($text); if ($length <= $showFirst + $showLast) { return $text; } return substr($text, 0, $showFirst) . str_repeat($maskChar, $length - $showFirst - $showLast) . substr($text, -$showLast); } // 使用示例 echo hideText("张三", 1, 1); // 张*三 echo hideText("13812345678", 3, 4); // 138****5678 echo hideText("110101199003072316", 6, 4); // 110101******2316 ``` --- ## 七、使用 `mb_substr` 处理多字节字符(如中文) 对于中文等多字节字符,建议使用 `mb_substr` 而不是 `substr`,以避免乱码。 ```php function hideChineseName($name) { $length = mb_strlen($name, 'UTF-8'); if ($length <= 1) return '*'; $first = mb_substr($name, 0, 1, 'UTF-8'); $last = mb_substr($name, -1, 1, 'UTF-8'); return $first . str_repeat('*', $length - 2) . $last; } ``` --- ## 总结 | 字段类型 | 隐藏方式 | |----------|----------| | 姓名 | 显示首尾,中间用 * 替代 | | 用户名 | 同上 | | 身份证 | 前6位 + 8个 * + 后4位 | | IP | 前两位 + **.** | | 手机号 | 前3位 + 4个 * + 后4位 | 如需更复杂的格式(如保留中间几位),可以自定义参数来实现。 需要我帮你写一个统一的隐藏函数吗?
上一篇:
php获取随机字符串的几种方法
下一篇:
php中mysql手动提交事务和在for循环里进行事务控制及声明式事务的使用
标题录入,一次不能超过6条
返回顶部
留言
留言
评论