ユニークな関数を見つけたのでメモ。
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>
面白いね。