使用 smarty 隐藏电子邮件域

Hiding email domain using smarty

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

{$VALUE|substr:-4}

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

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

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

您可以使用

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

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

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

因此,我们首先找到@,然后我们只匹配字母数字符号,然后将其全部替换为x符号。 @ 本身在反向引用 的帮助下在结果中恢复。

这是一个IDEONE PHP demo

使用 PHP 函数的 smarty 语法在 this SO post 中有描述。