\1</a>'; //メールアドレスにマッチ $pattern_mail = '/([a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z]+)/'; $replace_mail = '<a hr...">

PHP URLとメールアドレスを自動でaタグで囲む

/ PHP / Comment[2]

http,https,*@*に自動でa hrefをつけてくれる関数です。

function autohyperlink( $content ) {
  //http,https,ついでにftpにマッチ
  $pattern_http = '/((?:https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+)/';
  $replace_http = '<a href="\1" target="_blank">\1</a>';
  //メールアドレスにマッチ
  $pattern_mail = '/([a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z]+)/';
  $replace_mail = '<a href="mailto:\1">\1</a>';
  //置換
  $content = preg_replace( $pattern_http, $replace_http, $content );
  $content = preg_replace( $pattern_mail, $replace_mail, $content );
  return $content;
}

使い方

<?php echo autohyperlink( $content ); ?>
関連記事

コメント

Re: メールアドレスのマッチ

失礼しました。修正しておきました。
ご指摘ありがとうございます!

| URL | 長倉 怜二#-

メールアドレスのマッチ

メールの方のマッチが
/([a-zA-Z0-9 ~~ zA-Z]+)/
と() が抜けていると思われます。
マッチはしますが a タグに値が入らないので

| URL | 通りすがり#-

:
:
:
:
:
管理人のみ表示を許可