19 function smarty_outputfilter_obfuscate_email($output, \Smarty_Internal_Template $template) {
20 global $obfuscated_email_count;
21 $obfuscated_email_count = 0;
22 $output = preg_replace_callback(
23 '!<a\s([^>]*)href=["\']mailto:([^"\']+)["\']([^>]*)>(.*?)</a[^>]*>!is',
29 function do_it($matches) {
30 global $obfuscated_email_count;
38 $address = $matches[2];
39 $obfuscated_address = str_replace(array(
".",
"@"), array(
" dot ",
" at "), $address);
40 $extra = trim($matches[1].
" ".$matches[3]);
42 $obfuscated_text = str_replace(array(
".",
"@"), array(
" dot ",
" at "), $text);
44 $string =
"var e; if (e = document.getElementById('obfuscated_email_".$obfuscated_email_count.
"')) e.style.display = 'none';\n";
45 $string .=
"document.write('<a href=\"mailto:".$address.
"\" ".$extra.
">".$text.
"</a>');";
47 for ($x=0; $x < strlen($string); $x++) {
48 $js_encode .=
'%' . bin2hex($string[$x]);
50 $replace =
'<a id="obfuscated_email_'.$obfuscated_email_count.
'" href="mailto:'.$obfuscated_address.
'">'.$obfuscated_text.
'</a><script type="text/javascript" language="javascript">eval(unescape(\''.$js_encode.
'\'))</script>
';
52 ++$obfuscated_email_count;