views:

345

answers:

10

Is there an elegant and easy/simple way to do it using PHP, Javascript or Jquery?

+1  A: 

you 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.

Zack
+1  A: 

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.

porneL
+1  A: 

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.

Nate B
this would be defeated by any robot which did a full DOM render
Richard
+5  A: 

You might want to look into reCAPTCHA Mailhide. It should be easy to use from PHP.

jensgram
this looks to be one of the best solutions i've seen. however, it does come with the cost of being a slight pain for the user
Richard
@Richard. Yes, for the users who will actually use the address, that is :)
jensgram
+6  A: 

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:

[email protected]

David
But how can I reverse the email address using PHP or JS?
Steven
strrev(), thank you.
Steven
I'm not a PHP guy, but try the strrev() method: http://php.net/manual/en/function.strrev.php
David
+1 for the nice idea!
DaNieL
..this has just 1 problem, if someone try to copy'n'paste the email adress, he will see the reversed version, "moc.rab@oof"
DaNieL
as I commented below, any javascript manipulation will be defeated by robots doing full DOM render. You're best of with an image, or the recaptcha solution suggested here.
Richard
+2  A: 

never write email addresses as text on webpages, NEVER!

and browser bots surely have JS enabled -_-

Maybe you dont believe, but many costumer want the emails to be ritten in the HTML, in text form. I warn them about the spam, but they simply dont care... well, the take care of it just 3 months later ;)
DaNieL
+3  A: 

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);
?>
Keith Maurino
What if I want the placement of image to be adaptable?
Steven
..save the image on the web server, and load it in the html page simply with <img src="$imageurl" />
DaNieL
A: 

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 ...

elQueFaltaba
this would be picked up by any robot doing the minimum of DOM parsing
Richard
A: 

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%)

Richard
A: 

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!

elQueFaltaba