You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现字符串中手机号与邮箱的部分内容隐藏方案

PHP中隐藏字符串内手机号和邮箱部分内容的实现方法

原始待处理字符串

(111) 222-3333
fgbv 1112223333
111 222-3333 fghgg
111-222-3333 jony13@gmail.com fghntyjn
(111)2223333
+11234567890
1-8002353551
123-456-7890 -Hello!
+1 - 1234567890
string

期望处理结果

(111) 222-3xxx fgbv 1112223xxx 111 222-3xxx fghgg 111-222-3xxx jonxxx@xxxil.com fghntyjn (111)2223xxx +11234567xxx 1-8002353xxx 123-456-7xxx -Hello! +1 - 1234567xxx string

实现代码

通过PHP的preg_replace结合正则表达式可完成需求:

$originalStr = <<<STR
(111) 222-3333
fgbv 1112223333
111 222-3333  fghgg
111-222-3333 jony13@gmail.com fghntyjn
(111)2223333
+11234567890
1-8002353551
123-456-7890   -Hello!
+1 - 1234567890
string
STR;

// 隐藏手机号最后3位
$processedStr = preg_replace('/(\+?[()\d\s-]*\d)\d{3}/', '$1xxx', $originalStr);

// 隐藏邮箱部分内容:用户名留前3位,主域名留最后2位
$processedStr = preg_replace('/(\w{3})\w+@\w*(\w{2})(\.\w+)/', '$1xxx@xxx$2$3', $processedStr);

// 输出处理后的字符串
echo $processedStr;

代码说明

  • 手机号处理:正则/(\+?[()\d\s-]*\d)\d{3}/匹配所有带格式(含+号、括号、横杠、空格)的手机号,捕获除最后3位外的全部内容,将最后3位替换为xxx。
  • 邮箱处理:正则/(\w{3})\w+@\w*(\w{2})(\.\w+)/捕获用户名前3个字符、主域名最后2个字符及顶级域名,把用户名剩余部分和主域名前面部分替换为xxx,生成符合要求的隐藏格式。

内容的提问来源于stack exchange,提问作者Vitaly Govorin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:45:35