[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 メーリングリストの案内