我们在开发wordpress主题的用户中心功能的时候,可能需要在用户基本资料的地方使用一些技术手段来保护用户的隐私信息,例如用户的邮箱地址、用户名或者是用户的手机号码。那么我们最常用的方式方法就是使用(*)星号来处理这些信息的显示效果来达到页面输出的用户隐私信息,例如下图的效果示例:
接下来我就来介绍一种简单又实用的wordpress中使用(*)星号隐藏用户信息的方法,我已经将代码封装,支持邮箱地址、手机号码、中文用户名,具体行有注释,复制下面代码到自己主题的 function.php 文件中直接用就好了。
核心代码
/** * 使用(*)星号隐藏手机号码、中文用户名及邮箱地址 * @author jackie * @author url https://www.themeke.com */function starstr($str) { if (strpos($str, '@')) { //邮箱 $email_array = explode("@", $str); $prevfix = (strlen($email_array[0]) < 4) ? "" : substr($str, 0, 3); //邮箱前缀 $count = 0; $str = preg_replace('/([dw+_-]{0,100})@/', '***@', $str, -1, $count); //邮箱前缀星号替换 $repstr = $prevfix . $str; } else { $pattern = '/(1[3458]{1}[0-9])[0-9]{4}([0-9]{4})/i'; //正则判断手机号 if (preg_match($pattern, $str)) { //手机号码星号替换 $repstr = preg_replace($pattern, '$1****$2', $str); } else { //中文用户名星号替换 $strlen = mb_strlen($str, 'utf-8'); $firststr = mb_substr($str, 0, 1, 'utf-8'); $laststr = mb_substr($str, -1, 1, 'utf-8'); if ($strlen == 2){ $repstr = $firststr . str_repeat('*', mb_strlen($str, 'utf-8') - 1); }else{ $repstr = $firststr . str_repeat("*", $strlen - 2) . $laststr; } } } return $repstr;}
调用输出数据
<?php $username = "用户名"; $email = "123456@qq.com"; $phone = "13512345678"; echo starstr($username); // 输出: 用*名echo starstr($email); // 输出: 123***@qq.comecho starstr($phone); // 输出: 135****5678?>