我有这样的电子邮件
uuak6G6GgD@gmail.com
d3lferM@gmail.com
Efqc9@gmail.com
如何转换和选择这样的。
uuakxxxxxx@xxxxx.xxx
d3lfxxx@xxxxx.xxx
Efqcx@xxxxx.xxx
是的我能够得到这个值但是,我在mysql函数方面还不够好所以请尽可能让它变得简单和简短。并且还建议了其他解决方案。
我已将查询创建为
SELECT CONCAT(LEFT(email,
4),SUBSTR(REGEXP_REPLACE(email,'[a-z0-9]',"x"),5)),email
FROM `users`
我使用PHP
作为服务器端,所以如果我们可以让php足够好,请同时建议。
您的帮助和建议非常明显。
答案 0 :(得分:5)
如果该点是电子邮件地址的混淆,那么您不应该用x替换字符,从而指示电子邮件地址的长度。只需取前4个字符(左()函数)并添加固定的结尾“xxxxxxxx@xxxx.xxx”。您还需要决定如何处理用户部分短于4个字符的电子邮件地址。
答案 1 :(得分:1)
如果您想使用PHP实现此目的,您只需使用以下regex
以及preg_replace
功能,如
(^(\w){1,4}|@|\.)(*SKIP)(*F)|(.)
示例:
echo preg_replace("/(^(\w){1,4}|@|\.)(*SKIP)(*F)|(.)/","$1x","uuak6G6GgD@gmail.com");
答案 2 :(得分:0)
$emails = [
'uuak6G6GgD@gmail.com',
'd3lferMGo7@gmail.com',
'Efqc90dUGI@gmail.com',
'I@gmail.com',
];
$modded = [];
foreach ($emails as $item) {
$name = explode('@', $item);
$name = str_pad(substr($name[0], 0, 4), 4, "x");
$modded[] = $name . 'xxxx@xxx.xxx';
}
var_dump($modded);
答案 3 :(得分:0)
我会建议像:
$email = substr($email, 0, 4) . preg_replace('/\w/', 'x', substr($email, 4));
在MySQL查询中执行它通常不是可以理解的。 MySQL并不擅长这种数据转换。
答案 4 :(得分:0)
As New