PhpRiot
Become Zend Certified

Prepare for the ZCE exam using our quizzes (web or iPad/iPhone). More info...


When you're ready get 7.5% off your exam voucher using voucher CJQNOV23 at the Zend Store
Related Articles

Anti-Spam Techniques In PHP, Part 1

Technique 2: Rewriting

This technique is used commonly by people who post to forums, blogs or discussions to keep their email address human-readable, but without using standard symbols like @ and period. This means if anyone wants to email you they will have to type out your email address manually, but at least if somebody has gone to that effort it’s unlikely they are sending you spam.

So basically what we are doing here is to turn an email address that looks like antispam@example.com into antispam [AT] example [DOT] com, or something along those lines.

Once again, Smarty has built in functionality for this, once again using the escape modifier.

Listing 4 listing-4.tpl
{assign var='email' value='antispam@example.com'}
{$email|escape:'mail'}

This will output

Listing 5 Output from using Smarty's email address escaping (listing-5.txt)
antispam [AT] example [DOT] com

There’s no point in making this a hyperlink as it would not be valid anyway.

To achieve this without Smarty, use something like this:

Listing 6 listing-6.php
<?php
    function escapeEmail($string)
    {
        return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string);
    }
 
    $email = 'antispam@example.com';
    echo escapeEmail($string);
?>

A further technique you could employ is to use random replacements for multiple email address, so each time you show an address it could be different, like antispam [AT] example [DOT] com, then antispam AT example DOT com, just simple variations like that which make harvester writers have to work that extra bit harder.

In This Article