gpt4 book ai didi

php - 寻找一个仅限 php 的电子邮件地址混淆器功能

转载 作者:可可西里 更新时间:2023-11-01 12:24:53 25 4
gpt4 key购买 nike

是否有仅限 php 的电子邮件地址混淆器功能?在网上找到的大多数都是 JS 和 PHP 的混合体。

最佳答案

这是我使用的几个函数。

第一个使用 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('firstname.last-name@example.com');
-->
firstn&#x61;m&#x65;&#x2e;la&#115;t-name&#x40;examp&#108;e&#46;&#x63;om

第二个将返回链接,其中电子邮件地址是 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('firstname.last-name@example.com');
-->
<a href="mailt&#111;&#58;%66i&#37;72stna%&#54;d&#x65;&#46;&#37;6c&#x25;6&#x31;st&#x2d;name&#64;&#101;&#x78;&#x61;mple&#46;co&#109;" rel="nofollow">f&#x69;&#114;s&#x74;na&#109;e&#x2e;&#108;a&#x73;t-name&#64;e&#x78;ample&#46;co&#109;</a>

关于php - 寻找一个仅限 php 的电子邮件地址混淆器功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com