Automatic Email Address Protection PHP / JavaScript
It is important to protect email addresses on websites from being harvested by spambots.
"Email spambots collect e-mail addresses from the Internet in order to build mailing lists for sending unsolicited e-mail, also known as spam. Such spambots are web crawlers that can gather e-mail addresses from Web sites, newsgroups, special-interest group (SIG) postings, and chat-room conversations. Because e-mail addresses have a distinctive format, spambots are easy to write. A number of legislators in the U.S. are reported to be devising laws that would outlaw the spambot." – Wikipedia
This is my method for automatically detecting email addresses and replacing them with a javascript that will disguise them from spambots. The script works in two stages one in javascript and the other in php.
First the javascript function that outputs the mailto link:
function sb_email(user,site){ document.write('<a href=\"mailto:' + user + '@' + site + '\">'); document.write(user + '@' + site + '<\/a>'); }
The function has 2 parameters "user" and "site", which are the two parts of the email address either side of the "@". This function can be called like so:
sb_email('joe','bloggs.com');
The second part is the php functions that recognise email addresses and replace them with the javascript function to disguise them:
//function to output the js function create_js ($matches){ $parts = explode ('@', substr ($matches[0], 1)); if(substr($parts[1],-1)=='.'){$parts[1]=substr($parts[1],0,-1); $parts[2]='.';} $str = $matches[1].'<script language="JavaScript" type="text/javascript">'; $str .= 'sb_email("'.$parts[0].'", "'.$parts[1].'");'; $str .= '</script>'.$parts[2]; return $str; } $js_callback = "create_js "; //function to recognise emails function email_protect($text){ global $js_callback; $replace = '/([> ])[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}/i'; $output = preg_replace_callback($replace, $js_callback, $text); return $output; }
The email_protect php function can be called on any text string like so:
echo email_protect($text);
It will automatically replace any email addresses in the text with the javascript, therefore hiding them from spambots.







Hi, thanks for this great plugin. Unfortunatly I can’t seem to get it to work. I followed the instructions. But I can not see an example image inthe options page, and when I insert all the option values after update options the option boxes are empty again. Any idea how this can be? I’m onWP 2.5
Hi Printer,
Sorry, it was my mistake…I hadn’t updated one of the plugin files correctly. Please download again and re-install and it should work.
Sam
Ah, thanks! the optionpage is working now. I seem to run in to another problem now. when I refresh my site it goes blank(empty). the dashboard ist working though. i have this code in my ‘index’ now:
ID,’start’)} ?><a href=”" rel=”bookmark” title=”Permanent Link to “>ID,’end’)} ?>
this should be correct is it?
ow, i see the code did not displayed corect in my comment.
The code should be something like:
< ?php if(function_exists('wp_flash_titles'))
{wp_flash_titles($post->ID,’start’)} ?>
<a href=”< ?php the_permalink() ? rel="nofollow">” rel=”bookmark”>
< ?php the_title(); ?>
</a>
< ?php if(function_exists('wp_flash_titles'))
{wp_flash_titles($post->ID,’end’)} ?>
Hi,
I am trying to use the plugin once again. The saving options problem seems to be fixed, thanks. BUT when I activate and try to use the plugin, only the first two posts on my home page get flash titles and all the others are completely missing. I have about 20 posts showing on my homepage btw.
Any advice? Thanks!
Hi Stephen
It could be one of a few things causing this. Let’s start with the basics, have you tried emptying your browser’s cache and refreshing the page?
Does this behaviour occur on all pages of your site (monthly archives, single category pages, etc) or just on the home page? Do the titles that aren’t appearing contain any special html characters (@!”‘, etc.)?
Sam
Thanks for the reply. I see that it seems to be browser specific. In Safari it looks fine and in Firefox 3 beta I am having the problem of no titles after the first two.
Thanks for the plugin, it’s great!
I was wondering… how to configure the plugin if you want the background to be transparent?
Hi Brian
I hadn’t thought to add an option for transparent…I’ll have to add that feature in the next release! For now you could use this workaround…
change the line of the plugin’s code:
so.write(”flash_title_’.$flash_title_id.’”);
to:
so.addParam(”wmode”,”transparent”);
so.write(”flash_title_’.$flash_title_id.’”);
Hope this works for you…
Sam
Hey, great plug-in but sadly it won’t work in my site. The options panel don’t show the fonts.
How do I fix that? =(
BTW I’m using WP 2.5.1
Thanks.
I already figured out the problem. I upgraded the swfobject.js file. Thanks for the plugin.
I just couldn’t get it to work……
Hi, it is me again. Just wondering if you will be updating your plugin to work with the new Firefox? Thanks!
Hi Sam, I followed the instructions but I cant see it working both on Index and Single.
That’s the blog: http://www.laondagrafika.com/blog/
Thanks!
ID,’start’) ?>
<a href=”" rel=”bookmark”>
ID,’end’) ?>
thats the code I put on that files.
Hi! GREAT plugin idea! i desperately want to use it.
The trouble is that when i install the plugin, i get this error message:
Plugin could not be activated because it triggered a fatal error.
When i go to the plugin page under Options, i see various errors like:
WordPress database error: [Table 'untolden_wrdp1.wp_flashtitles' doesn't exist]
There are numerous similar errors. i checked my database, and it looks like the tables that the plugin needs aren’t getting installed.
Any suggestions? i’m running ver 2.2.2.
THANKS!!
Hi. Great plugin
Got one problem: There’s a “free space” before the title, means title, date and post don’t begin at the same beginning *lol* know what I mean? Visit my site to check, I can also send a screenshot if wanted (I don’t know how long this plugin will be activated). How can I fix this? Thanks a lot!
zulu
It’s me again! Another problem: The flash titles don’t link to full post as they used to do before, so I uninstalled the plugin now. But screenshot is ready to send
[...] WP Flash Title è questo il nome del plugin che permette tutto questo. [...]
Hi Sam! Contratulations for the plugin, I think is amazing!
You know? Im using the default theme for wordpress, the original code says:
< div class=”post” id=”post-” >
< a href=”" rel=”bookmark” title=”Permanent Link to ” >
But when i replace this code for:
ID,’start’)} ?>
<a href=”” rel=”bookmark”>
ID,’end’)} ? >
… then the theme no work.
I dunno where Im mistake. Can you help me? Thank you so much and sorry for my english language, still is very poor.
Hi again Sam…. i found my mistake, i forgot write class=”storytitle” in the code… is ok now… thank you so much again… your plugin is cool
hey there,
thanks for the great plug! but i have a little prob:
I am usin the lightbox2 plug to view my pics. when the lightbox effekt is running, the titles are “flashing” through the background of lightbox and sometimes appearing on the images. I recognized that this happens with every flash content embedded on the page… so its not really an issue for you but you might know a little workaround for that.
it could be something with the z-indexes i guess?
steve
Thanks Sam,
great plug in,
how would you code this to use in the main navigation of K2. it would solve many problems!
Thanks
Ronan
Thanks for that great plugin. The code, that you gave as an answer for the transparenc stuff, does not work. so.addParam(”wmode”,”transparent”);
so.write(”flash_title_’.$flash_title_id.’”);
I need that transparency and a little donation is on the way. Thanks.