テキスト内のURLのみリンク化する。

安藤(プログラマー)
演劇もやっていまする。

続いての投稿になりますが、これが自作php掲示板シリーズの最後になるのかなと思います!
実はすでにフレームワークのLaravelでの掲示板作りも完成してしまっているんですよね。笑
なので、次からはLaravelでの掲示板作りをブログにしていこうかなと(^^)

自作phpシリーズの最後の機能として、投稿されたコメント内のURLのみをリンク化して、表示させるという機能を組み込むことにしました。

いろんなサイトで、何気なくいつもお世話になっているこの機能ですが、実際やろうと思うと何から手を付ければいいのか・・・。
そこで社長より頂いたヒントがこれ、preg_replace_callbackです!

これね!これ!

http://php.net/manual/ja/function.preg-replace-callback.php

これを使うと、なんとも簡単に出来ちゃうんですな。

<?php
$comment = 'いつも使っているWEB検索サイトですか? https://www.geegle.co.jp/ ですかね〜。';
function getLink($comment)
{
//URL抽出の正規表現
$pattern = '/https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+/';
//該当する文字列に処理
$comment = preg_replace_callback($pattern,'replace',htmlspecialchars($comment));
return $comment;
}
function replace($matches)
{
return '<a href="'.$matches[0].'">'.$matches[0].'</a>';
}
echo $comment;

これだけ!
すると$commentは・・・

いつも使っているWEB検索サイトですか? https://www.geegle.co.jp/ ですかね〜。

となるわけですね!
無事にリンクになっているんですね〜。

ただ、正規表現の箇所が難しくて、いまだにベストな正規表現がわからない・・・。
上記の例だと不十分で、コメントに先に<a>タグが入れられていた場合、上手く処理ができないんですよね(*_*)
いい正規表現を見つけたい。。

まだまだ勉強していかねばなりません。

さてさて、最後はあっさりな内容でしたが、これにて自作php掲示板シリーズはおしまいになります!!
次はLaravel製掲示板シリーズですねw

引き続き、よろしくお願いしますー!!