使用 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 中有描述。
我们正在使用 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 中有描述。