[英]How to get the partial email address in javascript and PHP
我正在使用 TypeScript(Javascript)
如何部分隐藏这样的电子邮件地址?
jack.dawson@gmail.com 至 j***** n@g .com
我正在使用下面的脚本来获得上面的输出。 但是@
之后我需要得到三分之一的字符。 例如:如果它是一个 10 个字符的字符串,我只需要显示三分之一的字符并保留被屏蔽。
let str = "tsadsadsadsadonkjhuhuhuy@gmail.com" str = str.split(''); let finalArr = []; let len = str.indexOf('@'); str.forEach((item, pos) => { (pos >= 3 && pos <= len - 2) ? finalArr.push('*'): finalArr.push(str[pos]); }) document.write(finalArr.join('')); console.log(finalArr.join(''))
我也在尝试在 php 中做到这一点。 我更喜欢 php 和 javascript 中的输出。
我需要在.com
之前的@
符号之后获得三分之一的字符
我的简单 JavaScript 解决方案:
let email = document.getElementById("email").innerHTML; //You should validate email format before proceeding let parts = email.split("@"); let name = parts[0]; let tld = parts[1]; let censored = name.charAt(0) + "****" + name.charAt(name.length-1) let result = censored + "@" + tld.substring(0, Math.floor(1/3*tld.length)); document.getElementById("censored").innerHTML = result;
<span id="email">thisismytestname@example.com</span><br> <span id="censored"></span>
PHP 解决方案的工作方式基本相同:
<?php
$email = "myemail@test.com";
//Should validate email format before proceeding
$parts = explode("@", $email);
$name = $parts[0];
$tld = $parts[1];
$censored = substr($name, 0, 1) . "****" . substr($name,-1);
$result = $censored . "@" . substr($tld, 0, floor(1/3*strlen($tld)));
echo $result; //echoes t****e@example.com
?>
这是JS:
const firstAndLast = str => {
const firstChar = str.substring(0,3);
const lastChar = str.slice(-1);
return [firstChar, lastChar]
}
const firstThird = str => {
const strArray = str.split(".");
const result = []
for (let i = 0; i < (strArray[0].length + 1)/3; i++) {
result.push(str[i])
}
return [result.join(''), strArray[1]]
}
const str = "tsadsadsadsajhuhuhuy@gmail.com"
const strArray = str.split("@");
const [userFirst, userLast] = firstAndLast(strArray[0])
const [domainFirst, domainLast] = firstThird(strArray[1])
console.log(`${userFirst}****${userLast}@${domainFirst}***.${domainLast}`)
这是PHP:
<?php
function firstAndLast($str) {
$firstChar = substr($str, 0, 3);
$lastChar = substr($str, -1);
return [$firstChar, $lastChar];
}
function firstThird($str) {
$strArray = explode(".", $str);
$result = [];
$str_length = (strlen($strArray[0]) + 1)/3;
for ($i = 0; $i < $str_length; $i++) {
array_push($result, $str[$i]);
}
return [implode('', $result), $strArray[1]];
}
$str = "tsadsadsadsajhuhuhuy@gmail.com";
$strArray = explode("@", $str);
$user = firstAndLast($strArray[0]);
$domain = firstThird($strArray[1]);
echo $user[0].'****'.$user[1].'@'.$domain[0].'***.'.$domain[1];
两者都将您的示例电子邮件变成:
tsa****y@gm***.com
在 PHP 中
preg_match('\\w(?<mid1>.*?)@\\w(?<mid2>.*?)\\.(?<ext>\\w+)', $email, $matches)
str_replace($matches['mid1'], str_repeat('*'), strlen($matches['mid1']))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.