PHP中如何将MySQL查询返回的姓名仅显示前3字符并替换剩余为星号
解决方案
先封装一个通用的掩码处理函数,避免重复写逻辑:
function maskName($name) { $length = strlen($name); return $length > 3 ? substr($name, 0, 3) . str_repeat('*', $length - 3) : str_repeat('*', $length); }
把这段函数加到你的代码里,再修改输出first_name和last_name的部分,调用函数处理即可。完整代码如下:
require_once 'includes/db.php'; // 封装掩码处理函数 function maskName($name) { $length = strlen($name); return $length > 3 ? substr($name, 0, 3) . str_repeat('*', $length - 3) : str_repeat('*', $length); } $query = "SELECT * FROM sign_in3 ORDER BY date ASC LIMIT 5"; $results = mysqli_query($conn, $query); $records = mysqli_num_rows($results); if (!empty($records)) { while ($row = mysqli_fetch_assoc($results)) { ?> <tr style="font-size:40px;"> <td><center><?php echo maskName($row['first_name']); ?></center></td> <td><center><?php echo maskName($row['last_name']); ?></center></td> <td><center><?php echo $row['last_number']; ?></center></td> </tr> <?php } } ?>
关键说明
- 函数
maskName会判断字符串长度:如果超过3个字符,保留前3位,剩下的用星号替换;如果长度≤3,直接用对应数量的星号代替(如果想让短名字原样显示,把函数里的: str_repeat('*', $length)改成: $name即可)。 - 循环输出时,直接把数据库返回的姓名字段传入函数,就能得到需要的掩码效果。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

