6月
12
2011

【正規表現】 preg_replace()を使用して、URL文字列をHTMLのリンク形式に置換する方法

記事などに含まれるURLを、aタグで囲むことなく、プログラムで自動的にHTMLのリンク形式に置換する方法を紹介します。

サンプルコード

※文字エンコードはUTF-8を使用しています。

// 対象文字列
$text = 'このサイトは、http://tutty.infoです。';

// パターン
$pattern = '/((?:https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+)/u';

// 置換後の文字列
$replacement = '<a href="\1">\1</a>';

// 置換
$text= preg_replace($pattern,$replacement,$text);

// 出力
echo $text;

出力結果

このサイトは、 http://tutty.info です。

正規表現のポイント

  • “(?:”は、サブパターンのキャプチャをしない場合に使用します
  • 文字クラス内では、”^”、”-”、”\”、”]” の4文字をエスケープします
  • デリミタ文字列 “/” は、文字クラス内でもエスケープが必要です。
  • “‘”は、シングルクォート文字列のため、エスケープしています(正規表現のエスケープとは関係ありません)
  • 文字エンコードがUTF-8の場合、パターン修飾子に”u”を指定する必要があります

関数

function link_it($text){
    $pattern = '/((?:https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+)/u';
    $replacement = '<a href="\1">\1</a>';
    $text= preg_replace($pattern,$replacement,$text);
    return $text;
}

1 Comment + Add Comment

  • さんこうにさせてもらいます。
    ありがとうございました

コメントする

メールアドレスは公開されません。

このエントリーをはてなブックマークに追加