[PHP-users 29827] Re: メールの自動リンク

Mitsutoshi Nakamura gmataw @ bitvalue.com
2006年 7月 20日 (木) 00:00:28 JST


中村@東京です。

> 掲示板に書かれたメールアドレスに対し、自動的にリンク
> したいのですがどうしてもこちらの望むようにリンク出来ません。
> 
> 下記はテスト的にメールアドレスをリンクするプログラムのみ抽出した物です。
> <?
> $mail = "123456789 @ docomo.ne.jp";
> $mail = ereg_replace("[^=\'\">]([0-9a-zA-Z./_-]+@[0-9a-zA-Z./_-]+\.[0-9a-zA-Z]{2,4})", " <a href=\"mailto:\\1\">\\1</a>", $mail);
> 
> echo $mail;
> ?>
> 
> 結果
> <a href="mailto:23456789 @ docomo.ne.jp">23456789 @ docomo.ne.jp</a>
> 
> こちらが望んでいる結果は
>  <a href="mailto:123456789 @ docomo.ne.jp">123456789 @ docomo.ne.jp</a>
> です。

ereg_replace は使った事がないので preg_replace ですが、
以下の様な感じでどうでしょう?

<?php
$html = <<<__HTML__
<span>1234567890 @ docomo.ne.jp</span><br />
<div>1234567890 @ ezweb.ne.jp</div><br />
__HTML__;
$pattern = '/([0-9a-zA-Z.\_-]+@[0-9a-zA-Z.\_-]+\.[0-9a-zA-Z]{2,4})/';
$replace = '<a href="mailto:$1">$1</a>';
echo preg_replace($pattern, $replace, $html);
?>





PHP-users メーリングリストの案内