|
|
方案一:
< php
function maskEmail($email)
{
$me = '';
$length = strlen($email);
for ($i = 0; $i < $length; $i++) {
$me .= "&#".ord($email[$i]).";";
}
return $me;
}
$me = maskEmail("[email protected]");
echo '<a href="mailto:'.$me.'">'.$me.'</a>';
>
上面那个仍有 mailto 字符, 还是会被扫, 下面的更好
方案二:
< PHP // -*- php -*-
function HideEmail($user, $host, $subject = '') {
$MailLink = '<a href="mailto:' . $user . '@' . $host;
if ($subject != '')
$MailLink .= ' subject=' . urlencode($subject);
$MailLink .= '">' . $user . '@' . $host . '</a>';
$MailLetters = '';
for ($i = 0; $i < strlen($MailLink); $i ++)
{
$l = substr($MailLink, $i, 1);
if (strpos($MailLetters, $l) === false)
{
$p = rand(0, strlen($MailLetters));
$MailLetters = substr($MailLetters, 0, $p) .
$l . substr($MailLetters, $p, strlen($MailLetters));
}
}
$MailLettersEnc = str_replace("\", "\\", $MailLetters);
$MailLettersEnc = str_replace(""", "\"", $MailLettersEnc);
$MailIndexes = '';
for ($i = 0; $i < strlen($MailLink); $i ++)
{
$index = strpos($MailLetters, substr($MailLink, $i, 1));
$index += 48;
$MailIndexes .= chr($index);
}
$MailIndexes = str_replace("\", "\\", $MailIndexes);
$MailIndexes = str_replace(""", "\"", $MailIndexes);
><SCRIPT LANGUAGE="javascript"><!--
ML="< = $MailLettersEnc >";
MI="< = $MailIndexes >";
OT="";
for(j=0;j<MI.length;j++){
OT+=ML.charAt(MI.charCodeAt(j)-48);
}document.write(OT);
// --></SCRIPT><NOSCRIPT>Sorry, you need javascript to view this email address</noscript>< PHP
}
function HideEmailWithName($name, $user, $host) {
print $name . " <";
HideEmail($user, $host);
print ">";
} |
|