【PHP】メールアドレスとテキストからmailtoのリンクを生成する。

ユニークな関数を見つけたのでメモ。

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
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&#58;'
    $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

下記のように使う。

1
2
3
4
$email = 'test@example.com';
$link = 'メールはこちら。';
$attrs = 'class = "test"';
echo encode_email($email, $link, $attrs);

すると下記HTMLが生成される。

1
<script type="text/javascript">document.write('<a href="ma');document.write('ilto&#58;');document.write('test&#64;example&#46;com');document.write('" class = "test" >');document.write('メールはこちら。');document.write('</a>');</script>

結果下記コードがブラウザに出力される。

1
<a href="mailto:test@example.com" class="test">メールはこちら。</a>

面白いね。