プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、テキスト内のURLをリンクにする
結論から言えば

変更後テキスト = mb_ereg_replace('(https?://[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)', '<a href="\1" target="_blank">\1</a>', 元テキスト);

でOKです。

それでは経緯と詳細を以下につらつらっと書いていきまする。

PHP、テキストからURLを抽出する」の記事でテキスト内のURL抽出について書いたのですが、
よくよく話を聞いたらまだ先がありました。
実際にはテキスト内のURL記述部分をリンク(アンカータグ)化したいのだそうです。

だったら最初からそう言えよ、ぶ~ぶ~(-ε-)

という呟きは心の中にしまい、ほれ、サンプルφ(--)

<?php

//元テキスト
$text = <<< EOT
■マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~:
http://piyopiyocs.blog115.fc2.com/

■ITの万屋 PCS - Piyopiyo Create Service 【基本情報】
 ぴよぴよhttp://i-3-i.info/index.html?mode=c02&hoge=hogeぴよぴよ

■「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
ほげほげhttp://wa3.i-3-i.info:80/ほげほげ

うんちゃらかんちゃら
EOT;

//元テキスト表示
print "■■■元テキスト■■■<br>";
print mb_ereg_replace('\r\n', '<br>', $text);
print '<br><br>';

//URL置換
$pattern = '(https?://[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)';
$replacement = '<a href="\1" target="_blank">\1</a>';
$text = mb_ereg_replace($pattern, $replacement, htmlspecialchars($text));


//変更後テキスト表示
print "■■■変更後テキスト■■■<br>";
print mb_ereg_replace('\r\n', '<br>', $text);
print '<br><br>';

print "■■■変更後テキストのソースコード■■■<br>";
$text = mb_ereg_replace('<', '<', $text);
$text = mb_ereg_replace('>', '>', $text);
print mb_ereg_replace('\r\n', '<br>', $text);
print '<br><br>';

?>

サンプルの実行結果はこちらφ(--)

■■■元テキスト■■■
■マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~:
http://piyopiyocs.blog115.fc2.com/

■ITの万屋 PCS - Piyopiyo Create Service 【基本情報】
 ぴよぴよhttp://i-3-i.info/index.html?mode=c02&hoge=hogeぴよぴよ

■「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
ほげほげhttp://wa3.i-3-i.info:80/ほげほげ

うんちゃらかんちゃら

■■■変更後テキスト■■■
■マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~:
http://piyopiyocs.blog115.fc2.com/

■ITの万屋 PCS - Piyopiyo Create Service 【基本情報】
 ぴよぴよhttp://i-3-i.info/index.html?mode=c02&hoge=hogeぴよぴよ

■「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
ほげほげhttp://wa3.i-3-i.info:80/ほげほげ

うんちゃらかんちゃら

■■■変更後テキストのソースコード■■■
■マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~:
<a href="http://piyopiyocs.blog115.fc2.com/" target="_blank">http://piyopiyocs.blog115.fc2.com/</a>

■ITの万屋 PCS - Piyopiyo Create Service 【基本情報】
 ぴよぴよ<a href="http://i-3-i.info/index.html?mode=c02&hoge=hoge" target="_blank">http://i-3-i.info/index.html?mode=c02&hoge=hoge</a>ぴよぴよ

■「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
ほげほげ<a href="http://wa3.i-3-i.info:80/" target="_blank">http://wa3.i-3-i.info:80/</a>ほげほげ

うんちゃらかんちゃら

「mb_ereg_replace」を使って、テキストから抽出したURLにアンカータグを付与しています。

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

の正規表現はURL抽出のときと同じです。

$replacement = '<a href="\1" target="_blank">\1</a>';

の「\1」はパターンマッチした文字列が入ります。

そんな感じ(--)ノ
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事