我们正在使用FormTools来管理组织中的客户数据。由于最近安全政策的变化,我的雇主要求我屏蔽客户的电话号码和电子邮件地址。我使用自定义字段模块并使用以下代码
创建字段以屏蔽它们{$ VALUE | SUBSTR:-4}
这适用于电话号码,但现在我的雇主要求我只屏蔽电子邮件地址的域名部分
例如:email@xyz.com应显示为email@xxx.com
上面提到的smarty变量$ value包含电子邮件地址。
答案 0 :(得分:2)
您可以使用
{'/(@)|(?!^)\G\w/'|preg_replace:'$1x':$value}
使用的正则表达式为(@)|(?!^)\G\w
。它执行以下操作:
(@)
- 匹配并捕获@
|
- 或...... (?!^)\G\w
- 每次成功比赛后的字母数字字符(\w
)。因此,我们首先找到@
,然后我们只在用x
符号替换所有符号后才匹配字母数字符号。借助反向引用@
,结果中会恢复$1
。
this SO post中描述了使用PHP函数的巧妙语法。