環境
Laravel:8.65
PHP:7.4
本題
やりたいこと
任意のテキストをフロントに出力する際に、文中のURLをすべてリンクにしたい
解決法
テキスト中のURLを検出し、aタグで囲う。
全部置き換えたいので、今回はpreg_replace
を使います。
1.URLっぽい文字列にマッチする正規表現を用意
$urlRegex = '/https?:\/\/[^\s]+/';
2.preg_replaceを使って文字列を置換
$linkedText = preg_replace($urlRegex, '<a href="$0" target="_blank" rel="noopener noreferrer">$0</a>', $text);
$0
に、正規表現にマッチする文字列が入っているため、それをaタグで囲う様に置換する。
target="_blank"
を書いておくことで、別タブで開くようにしています。
終了!!
これで、URLをリンクにすることが出来ました。