I see you have a PHP page so how about a PHP function? Here's one I use quite a bit - it converts random characters to HTML character codes;
Code:
function getObfuscatedEmailAddress($email) {
$alwaysEncode = array('.', ':', '@');
$result = '';
for ($i = 0; $i < strlen($email); $i++) { // Encode string using oct and hex character codes
if (in_array($email[$i], $alwaysEncode) || mt_rand(1, 100) < 25) { // Encode 25% of characters including several that always should be encoded
if (mt_rand(0, 1)) {
$result .= '&#' . ord($email[$i]) . ';';
} else {
$result .= '&#x' . dechex(ord($email[$i])) . ';'; }
} else {
$result .= $email[$i]; }
}
return $result;
}
function protectEmail($email, $text = null, $params = array()) {
if (!is_array($params)) { $params = array(); }
if (!isset($params['rel'])) { $params['rel'] = 'nofollow'; }
$neverEncode = array('.', '@', '+'); // Don't encode - not fully supported by IE & Chrome
$urlEncodedEmail = '';
for ($i = 0; $i < strlen($email); $i++) {
if (!in_array($email[$i], $neverEncode) && mt_rand(1, 100) < 25) { // Encode 25% of characters
$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 .= '>' . $text . '</a>';
return $link;
}
usage
Code:
<?php echo protectEmail('me@email.com', 'Email Me'); ?>
Bookmarks