G'day!
Did you want to encode the whole address, or just the special characters that the bots pick up? The latter would be better, just to keep browser processing down, you know? Anyway, if this is the case what you'll want to do is a simple str_replace. the str_replace function accepts arrays as parameters, so, all you need is an array with your search values, and a corresponding array with your replace values (this can be multidimensional for ease of use), and use them as parameters, like so:
$aStrRep['search'] = array("&", "@", ".");
$aStrRep['replace'] = array("&", "@", ".");
$email = str_replace($aStrRep['search'], $aStrRep['replace'], $email);