是否有一個PHP只有電子郵件地址混淆器功能?在網絡上發現的大多數是JS和PHP的混合。尋找一個PHP只有電子郵件地址混淆器功能
8
A
回答
9
這裏有幾個我使用的功能。
第一個使用HTML字符代碼混淆電子郵件地址:
function getObfuscatedEmailAddress($email)
{
$alwaysEncode = array('.', ':', '@');
$result = '';
// Encode string using oct and hex character codes
for ($i = 0; $i < strlen($email); $i++)
{
// Encode 25% of characters including several that always should be encoded
if (in_array($email[$i], $alwaysEncode) || mt_rand(1, 100) < 25)
{
if (mt_rand(0, 1))
{
$result .= '&#' . ord($email[$i]) . ';';
}
else
{
$result .= '&#x' . dechex(ord($email[$i])) . ';';
}
}
else
{
$result .= $email[$i];
}
}
return $result;
}
例子:
echo getObfuscatedEmailAddress('[email protected]');
-->
firstname.last-name@example.com
第二個將返回鏈接,電子郵件地址是HTML和URL編碼:
function getObfuscatedEmailLink($email, $params = array())
{
if (!is_array($params))
{
$params = array();
}
// Tell search engines to ignore obfuscated uri
if (!isset($params['rel']))
{
$params['rel'] = 'nofollow';
}
$neverEncode = array('.', '@', '+'); // Don't encode those as not fully supported by IE & Chrome
$urlEncodedEmail = '';
for ($i = 0; $i < strlen($email); $i++)
{
// Encode 25% of characters
if (!in_array($email[$i], $neverEncode) && mt_rand(1, 100) < 25)
{
$charCode = ord($email[$i]);
$urlEncodedEmail .= '%';
$urlEncodedEmail .= dechex(($charCode >> 4) & 0xF);
$urlEncodedEmail .= dechex($charCode & 0xF);
}
else
{
$urlEncodedEmail .= $email[$i];
}
}
$obfuscatedEmail = getObfuscatedEmailAddress($email);
$obfuscatedEmailUrl = getObfuscatedEmailAddress('mailto:' . $urlEncodedEmail);
$link = '<a href="' . $obfuscatedEmailUrl . '"';
foreach ($params as $param => $value)
{
$link .= ' ' . $param . '="' . htmlspecialchars($value). '"';
}
$link .= '>' . $obfuscatedEmail . '</a>';
return $link;
}
例如:
echo getObfuscatedEmailLink('[email protected]');
-->
<a href="mailto:%66i%72stna%6de.%6c%61st-name@example.com" rel="nofollow">firstname.last-name@example.com</a>
+0
有趣的方法+1。但它可能有一些兼容性問題。 –
+0
我沒有在Safari和移動瀏覽器中測試過它。 FF,IE,Chrome都不錯。 –
+0
行 - 請試試:-) –
12
我的最愛:
標記+ PHP
<span class="rev"><?php echo strrev($email); ?> </span>
CSS
.rev{
direction: rtl;
unicode-bidi: bidi-override;
}
1
這裏有一個用PHP 7類型提示。
只是$this->obfuscateEmail($email);
/**
* @param string $email
* @return string
*/
private function obfuscateEmail(string $email) : string
{
$em = explode("@", $email);
$name = implode(array_slice($em, 0, count($em) - 1), '@');
$len = floor(strlen($name)/2);
return substr($name, 0, $len) . str_repeat('*', $len) . "@" . end($em);
}
0
這裏的另一種方式把它的情況下,有一個字符的主機前:
/**
* @param string $email
* @return string
*/
private function obfuscateEmail($email)
{
$em = explode("@", $email);
$name = implode(array_slice($em, 0, count($em)-1), '@');
if(strlen($name)==1){
return '*'.'@'.end($em);
}
$len = floor(strlen($name)/2);
return substr($name,0, $len) . str_repeat('*', $len) . "@" . end($em);
}
相關問題
- 1. 電子郵件地址混淆.net asp
- 2. 發送電子郵件與PHP混淆
- 3. 在PHP中混淆電子郵件?
- 4. 只有電子郵件地址
- 5. 正則表達式轉換混淆電子郵件地址Perl
- 6. 如何阻止Terlerik RadEditor從反混淆電子郵件地址
- 7. PHP:電子郵件將工作,但只能對2個地址中的一個
- 8. PHP - 多個電子郵件地址
- 9. 如何在PHP中捕獲以下混淆電子郵件地址?
- 10. 與功能地址混淆c
- 11. PHP的郵件功能混亂我的電子郵件css
- 12. 選擇電子郵件地址只(SQL)
- 13. 插入一個電子郵件地址
- 14. php電子郵件功能不能使用.org電子郵件
- 15. 在Markdown中混淆電子郵件
- 16. 與電子郵件通訊混淆
- 17. 電子郵件地址中編碼的電子郵件地址。可能嗎?
- 18. GMail:這個listserv電子郵件地址是哪個電子郵件地址?
- 19. BlackBerry查找電子郵件地址
- 20. 電子郵件@域是一個有效的電子郵件地址
- 21. 只允許一個特定的電子郵件地址
- 22. 設置一個表格只允許.edu電子郵件地址
- 23. PHP編碼電子郵件地址
- 24. 用PHP解析電子郵件地址?
- 25. PHP郵件沒有發送「無效的電子郵件地址」
- 26. PHP將郵件發送到多個電子郵件地址
- 27. 確定是否電子郵件地址的郵件列表地址或個人電子郵件地址
- 28. 發送電子郵件到多個電子郵件地址
- 29. 發送電子郵件到多個電子郵件地址
- 30. 發送電子郵件到多個電子郵件地址
你的意思是你需要填寫之前,真實的電子郵件地址驗證碼寄給你? ;) –