使用smarty隐藏电子邮件域

时间:2015-10-29 15:30:28

标签: php regex smarty

我们正在使用FormTools来管理组织中的客户数据。由于最近安全政策的变化,我的雇主要求我屏蔽客户的电话号码和电子邮件地址。我使用自定义字段模块并使用以下代码

创建字段以屏蔽它们

{$ VALUE | SUBSTR:-4}

这适用于电话号码,但现在我的雇主要求我只屏蔽电子邮件地址的域名部分

例如:email@xyz.com应显示为email@xxx.com

上面提到的smarty变量$ value包含电子邮件地址。

1 个答案:

答案 0 :(得分:2)

您可以使用

{'/(@)|(?!^)\G\w/'|preg_replace:'$1x':$value}

使用的正则表达式为(@)|(?!^)\G\w。它执行以下操作:

  • (@) - 匹配并捕获@
  • | - 或......
  • (?!^)\G\w - 每次成功比赛后的字母数字字符(\w)。

因此,我们首先找到@,然后我们只在用x符号替换所有符号后才匹配字母数字符号。借助反向引用@,结果中会恢复$1

这是IDEONE PHP demo

this SO post中描述了使用PHP函数的巧妙语法。