Is there an elegant and easy/simple way to do it using PHP, Javascript or Jquery?
views:
345answers:
10you can try changing [email protected] to: "name at example dot com".
However, robots can easily account for this.
Otherwise, you could display a dynamic image of the email address if you are truly motivated.
Obfuscation using trickiest possible HTML entities and urlencode, implemented in PHP: http://hcard.geekhood.net/encode/
Source: http://code.google.com/p/hcardvalidator/source/browse/trunk/encode/index.php
Another approach I use is:
<a href="mailto:[email protected]">
<script>[…] a.href = a.href.replace(/removethis\./,'');</script>
It's worth noting that both techniques give users perfectly accessible, clickable link.
It's not a perfect solution, but the Enkoder (http://hivelogic.com/enkoder) is quite useful for this. It uses Javascript to obfuscate the address.
You might want to look into reCAPTCHA Mailhide. It should be easy to use from PHP.
There are many ways of doing this. We've had som luck obfuscating source via python/javascript. Another simpler favourite is the CSS unicode-bidi technique:
div.contact { unicode-bidi:bidi-override; direction: rtl; }
<div class="contact">moc.rab@oof</div>
Prints out:
never write email addresses as text on webpages, NEVER!
and browser bots surely have JS enabled -_-
You can use the PHP imagestring() function to create an image.
<?php
// Create a 100*30 image
$im = imagecreate(120, 30);
// White background and blue text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);
// Write the email address at the top left
imagestring($im, 5, 0, 0, '[email protected]', $textcolor);
// Output the image
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Would this work as well??
Using something like this
<span>myaddress</span><span>@</span><span>mydomain.com</span>
This won't stand as a link, but would still be recognizable by the human eye on a page, and probably con't be parsed by a robot. Haven't checked it out, thou. You could probably insert that string into a void and bind it to a function that composes the address by parsing out the content ..
Just a fast thought ...
This is difficult to do. Unless you use an image, anything which is rendered human-readable by your browser can be rendered human-readable by a robot. So even scrambling the e-email in some way in the HTML source and then using a javascript function to de-scramble dynamically on page rendering, this will be defeated by a robot which also does full rendering of the DOM.
Until recently I had good success with the above method, and didn't see any spam. Recently however I have noticed that addresses do seem to have been picked up. So I can only assume e-mail trawlers are now doing full DOM rendering.
So to conclude - an image is probably best (although even that is not 100%)
Ok. So after a while, I've found this blog article on how to do this easily. http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/ And how much impact does it do on spam receiving ..
I guess this could be complementary to the info given above .. Cheers!