Quick JavaScript email obfuscation
Posted on April 5th, 2004 in Code Repository | 5 Comments »
There are many methods to quickly obscure an email address from spam harvesters, this approach relies on the fact that most email harvesters won’t understand JavaScript.
/**
* Obfuscate an email address
*
* @author Aidan Lister <aidan@php.net>
* @version 1.1.0
* @link http://aidanlister.com/repos/v/function.mail_obfuscate.php
* @param string $email E-mail
* @param string $text Text
*/
function mail_obfuscate($email, $text = '')
{
// Default text
if (empty($text)) {
$text = $email;
}
// Create string
$string = sprintf('document.write(\'%s\');',
htmlspecialchars($email),
htmlspecialchars($text));
// Encode
for ($encode = '', $i = 0; $i < strlen($string); $i++) {
$encode .= '%' . bin2hex($string[$i]);
}
// Javascript
$javascript = '';
return $javascript;
}
A quick example:
echo mail_obfuscate('aidan@php.net');
Would result in:
As you can see, the output no longer remotely resembles an email address and is very unlikely to get picked up by a spam harvester.
5 Responses
very nice;) thnx a lot for this useful code
This is losely based on the obfuscator in Smarty, and is the function used to obfuscate the emails in the comments on this site.
i love this one …. I HATE spammers …
GOOD WORK MEN!.
NICE NICE NICE
with this modification you can set class attributes or id for CSS support.
old: function mail_obfuscate($email, $text = ”)
new: function mail_obfuscate($email, $text = ”, $plus_params=”)
old: $string = sprintf(’document.write(\’<a href=”mailto:%s”>%s</a>\’);’,
htmlspecialchars($email),
htmlspecialchars($text)
new: $string = sprintf(’document.write(\’<a href=”mailto:%s” %s>%s</a>\’);’,
htmlspecialchars($email),
$plus_params,
htmlspecialchars($text)
usage: mail_obfuscate(”info@riaevolution.com”, $text = ‘info@riaevolution.com’, ‘class=”link_content_footer”‘);
Excelent function! thank you for sharing your code