ユニークな関数を見つけたのでメモ。
function encode_email($email, $linkText, $attrs = '')
{
// remplazar aroba y puntos
$email = str_replace('@', '@', $email);
$email = str_replace('.', '.', $email);
$linkText = str_replace('@', '@', $linkText);
$linkText = str_replace('.', '.', $linkText);
$part1 = '<a href="ma';
$part2 = 'ilto:';
$part3 = '" '. $attrs .' >';
$part4 = '</a>';
$encoded = '<script type="text/javascript">';
$encoded .= "document.write('$part1');";
$encoded .= "document.write('$part2');";
$encoded .= "document.write('$email');";
$encoded .= "document.write('$part3');";
$encoded .= "document.write('$linkText');";
$encoded .= "document.write('$part4');";
$encoded .= '</script>';
return $encoded;
}
下記のように使う。
$email = 'test@example.com';
$link = 'メールはこちら。';
$attrs = 'class = "test"';
echo encode_email($email, $link, $attrs);
すると下記HTMLが生成される。
<script type="text/javascript">document.write('<a href="ma');document.write('ilto:');document.write('test@example.com');document.write('" class = "test" >');document.write('メールはこちら。');document.write('</a>');</script>
結果下記コードがブラウザに出力される。
<a href="mailto:test@example.com" class="test">メールはこちら。</a>
面白いね。