Генерация ссылки на адрес электронной почты

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* Генерация ссылки на адрес электронной почты
*
* @param str $mail
* @param str $text
* @param str $subj
* @return str
*/
private function generateLink($mail, $text = null, $subj = null)
{
$text = $text != null ? $text : $mail;
if ($subj != null)
{
$mail .= '?subject='.rawurlencode($subj);
}
$html = 'document.write(\'<a href="mailto:'.$mail.'">'.$text.'</a>\');';
$js = '';
for ($i = 0; $i < strlen($html); $i++)
{
$u = ord($html[$i]);
if ($u <= 0x7F)
{
;
}
else if ($u < 0xC2)
{
;
}
else if ($u <= 0xDF)
{
$u = ($u & 0x1F) << 6 | (ord($html{$i + 1}) & 0x3F);
$i += 1;
}
else if ($u <= 0xEF)
{
$u = ($u & 0x0F) << 12 | (ord($html{$i + 1}) & 0x3F) << 6 | (ord($html{$i + 2}) & 0x3F);
$i += 2;
}
else if ($u <= 0xF4)
{
$u = ($u & 0x0F) << 18 | (ord($html{$i + 1}) & 0x3F) << 12 | (ord($html{$i + 2}) & 0x3F) << 6 | (ord($html{$i + 3}) & 0x3F);
$i += 3;
}
else
{
;
}
if ($u < 256)
{
$js .= '%'.dechex($u);
}
else
{
$js .= '&#'.$u.';';
}
}
return '<script type="text/javascript">eval(unescape(\''.$js.'\'))</script>';
}