Vores besøgnende skal kunne læse og klikke på vores mailadresse. Men vi må huske at obfuscate mails hvis ikke at spam-robotterne skal læse email-linket og sende os spam.
Nedenstående kode er i store dele taget fra Zack Perdue‘s fine blogpost “3 Clever Ways To Protect Your Email From Spammers“, men jeg har rettet koden lidt til da jeg fik nogle fejl med koden hvis ikke funktionerne blev fodret med en mailadresse.
/*
* Obfuscate emails / use with "echo mailto($email)"
*/
function obfuscate($string) {
$safe = '';
foreach (str_split($string) as $letter) {
switch (rand(1, 3)) {
// HTML entity code
case 1:
$safe .= '&#'.ord($letter).';';
break;
// Hex character code
case 2:
$safe .= '&#x'.dechex(ord($letter)).';';
break;
// Raw (no) encoding
case 3:
$safe .= $letter;
}
}
return $safe;
}
function email($email) {
// Make sure the at sign is always obfuscated
return str_replace('@', '@', obfuscate($email));
}
function mailto($email, $title = NULL) {
// Obfuscate email address
if($email) {
$email = email($email);
if ($title === NULL) {
// Use the email address as the title
$title = $email;
}
return '<a href="mailto:'.$email.'">'.$title.'</a>';
} else {
return '';
}
}
Ovenstående implementation bruger jeg flittigt i kombination med WordPress Plugins der ikke håndterer dette af sig selv. Dette er fx tilfældet med “The Events Calendar”.
Kom i kontakt med mig