如何用PHP实现点击显示完整手机号,默认隐藏后6位?
实现点击显示完整手机号(默认隐藏最后6位)
核心需求拆解
- 默认状态:隐藏手机号最后6位,用
*替代 - 交互逻辑:点击后切换显示完整手机号
- 兼容不同长度的手机号(包括长度≤6的情况)
完整实现代码
<?php $number = epa_member('mobile_number'); // 获取会员手机号 $fullNumber = htmlspecialchars($number); // 转义特殊字符,避免XSS风险 $length = strlen($number); $hiddenNumber = ''; // 根据号码长度处理隐藏逻辑 if ($length > 6) { // 长度大于6时,显示前(总长度-6)位 + 6个* $visiblePart = substr($number, 0, $length - 6); $hiddenNumber = $visiblePart . '******'; } else { // 长度≤6时,默认显示完整号码;若需要隐藏全部,可替换为 str_repeat('*', $length) $hiddenNumber = $number; } ?> <!-- 前端交互部分 --> <span class="phone-toggle" data-full="<?php echo $fullNumber; ?>"> <?php echo $hiddenNumber; ?> </span> <script> // 点击切换显示状态 document.querySelectorAll('.phone-toggle').forEach(el => { el.addEventListener('click', function() { if (this.dataset.isFull === 'true') { // 当前显示完整号码,切换回隐藏状态 this.textContent = '<?php echo $hiddenNumber; ?>'; this.dataset.isFull = 'false'; } else { // 当前显示隐藏状态,切换为完整号码 this.textContent = this.dataset.full; this.dataset.isFull = 'true'; } }); }); </script>
代码说明
- PHP处理逻辑
- 先转义手机号特殊字符,避免前端注入风险
- 分支处理不同长度的号码:
- 长度>6:截取前半部分,拼接6个
*作为默认显示内容 - 长度≤6:默认显示完整号码(可根据需求改为全隐藏)
- 长度>6:截取前半部分,拼接6个
- 前端交互逻辑
- 用
data-full属性存储完整手机号,避免直接暴露在页面初始内容中 - 通过
dataset.isFull标记当前显示状态,点击时切换内容
- 用
替换原有代码
直接将你提供的PHP代码块替换为上述完整代码即可,无需额外依赖。
内容的提问来源于stack exchange,提问作者gwmbox
相关产品推荐
相关产品推荐

