如何在javascript和PHP中获取部分电子邮件地址
我正在使用类型脚本(Javascript) 我怎样才能像这样部分隐藏电子邮件地址 杰克。dawson@gmail.com致j******n@g.com 我使用下面的脚本来获得上面的输出。 但是在如何在javascript和PHP中获取部分电子邮件地址,javascript,php,html,css,Javascript,Php,Html,Css,我正在使用类型脚本(Javascript) 我怎样才能像这样部分隐藏电子邮件地址 杰克。dawson@gmail.com致j******n@g.com 我使用下面的脚本来获得上面的输出。 但是在@之后,我需要得到字符的三分之一。 如果它是一个10个字符的字符串,我只需要显示该字符的三分之一,其余的要屏蔽 let str=”tsadsadsadsadonkjhuhuhuy@gmail.com" str=str.split(“”); 设finalArr=[]; 设len=str.indexOf('
@
之后,我需要得到字符的三分之一。
如果它是一个10个字符的字符串,我只需要显示该字符的三分之一,其余的要屏蔽
let str=”tsadsadsadsadonkjhuhuhuy@gmail.com"
str=str.split(“”);
设finalArr=[];
设len=str.indexOf('@');
str.forEach((项目,位置)=>{
(在PHP中pos>=3&&pos)
使用正则表达式提取中间部分:preg_match('\w(?.*?)@\w(?.*?\(?\w+),$email,$matches)
替换为字符串长度的1/3str_Replace($matches['mid1']、str_repeat('*')、strlen($matches['mid1']))
我的简单JavaScript解决方案:
let email=document.getElementById(“email”).innerHTML;
//您应该在继续之前验证电子邮件格式
let parts=email.split(“@”);
设name=parts[0];
设tld=零件[1];
设删失=name.charAt(0)+“*****”+name.charAt(name.length-1)
让结果=删失+“@”+tld子字符串(0,数学层(1/3*tld.length));
document.getElementById(“已删除”).innerHTML=result;
thisismytestname@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或JS答案是什么呢?函数掩码($str,$first,$last){$len=strlen($str);$toShow=$first+$last;返回substr($str,0,$len我想在js和php中都使用。请您编辑问题,而不是在评论中发布不可读的代码?以上是我的phpcode@Justinas在@i希望前3个字符和最后1个字符被屏蔽之前,@i希望只有字符串长度的三分之一..com与@i希望前3个字符和最后1个字符相同满足剩余的被屏蔽。在@I之后只需要字符串长度的三分之一字符,剩余的被取消屏蔽。在..com之后,我很抱歉,我不能用这样的描述为您提供一个更令人满意的答案。请在您的问题中提供所有要求的示例,因为您刚刚更改了源代码中的两个要求最后一个问题。我希望输出为“aaa”**********b@one-如果给定的邮件是abcxyz@gmailgamil.com表示输出必须为“abc**z@gma*********.com不客气。我注意到我上面的例子适用于my@example.com域。也可以处理子域,如my@sub.example.com.将第一个第三个函数的返回行更改为:JS:return[result.join(“”),strArray.pop()]和PHP:return[infrade(“”,$result),end($strArray)];
<?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