PHPでテキストの内容にURLが含まれていればそれを検出し、自動でURLをaタグで囲んでリンク化させる方法をメモ。
WordPressで、「カスタムフィールドの入力エリアにaタグ打ち込んでもエスケープ処理されてリンクにならない!」ってケースでURLをリンク化してほしい場合などに使えます。
流れとしては非常に単純で、正規表現でURL部分を検出し、preg_replace
でaタグで囲むように置換するだけ。
$text; //対象のテキスト
$pattern = '/((?:https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+)/';
$replace = '<a href="$1">$1</a>';
$text = preg_replace( $pattern, $replace, $text );
この処理を挟むと、
ほげほげhttps://wemo.tech/tips/2160ほげほげ
のようなテキストで、「https://wemo.tech/tips/2160」の部分がリンク化します。