亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 javascript 和 PHP 中獲取部分電子郵件地址

如何在 javascript 和 PHP 中獲取部分電子郵件地址

大話西游666 2023-05-25 15:36:59
我正在使用 TypeScript(Javascript)我怎樣才能像這樣部分隱藏電子郵件地址?[email protected]至 j***** [email protected]我正在使用下面的腳本來獲得上面的輸出。但是在@我需要得到三分之一的字符之后。例如:如果它是一個 10 個字符的字符串,我只需要顯示三分之一的字符,其余的則被屏蔽。let str = "[email protected]"    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
查看完整描述

3 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

我的簡單 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">[email protected]</span><br>

<span id="censored"></span>


PHP 解決方案工作方式基本相同:


<?php

$email = "[email protected]";


//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****[email protected]


?>


查看完整回答
反對 回復 2023-05-25
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

這是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 = "[email protected]"

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 = "[email protected]";

$strArray = explode("@", $str);


$user = firstAndLast($strArray[0]);


$domain = firstThird($strArray[1]);


echo $user[0].'****'.$user[1].'@'.$domain[0].'***.'.$domain[1];

兩者都將您的示例電子郵件變成:


tsa****y@gm***.com


查看完整回答
反對 回復 2023-05-25
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

在PHP中

  1. 用正則表達式提取中間部分:preg_match('\w(?<mid1>.*?)@\w(?<mid2>.*?)\.(?<ext>\w+)', $email, $matches)

  2. 替換為字符串長度的 1/3str_replace($matches['mid1'], str_repeat('*'), strlen($matches['mid1']))

工作示例


查看完整回答
反對 回復 2023-05-25
  • 3 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號