テキスト内の URL を検出してリンクする
ユーザーが指定したテキストを操作する場合、多くの場合、テキスト内に埋め込まれた URL を識別してリンクすることが必要になります。 。 PHP でこれを実現する方法は次のとおりです。
正規表現の使用
URL を検出するには、次の正規表現を使用できます:
$rexProtocol = '(https?://)?'; $rexDomain = '((?:[-a-zA-Z0-9]{1,63}\.)+[-a-zA-Z0-9]{2,63}|(?:[0-9]{1,3}\.){3}[0-9]{1,3})'; $rexPort = '(:[0-9]{1,5})?'; $rexPath = '(/[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]*?)?'; $rexQuery = '(\?[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?'; $rexFragment = '(#[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?'; $regex = "&\b$rexProtocol$rexDomain$rexPort$rexPath$rexQuery$rexFragment(?=[?.!,;:\"]?(\s|$))&";
この正規表現は以下に一致します:
作成中ハイパーリンク
URL が検出されたら、次のコールバック関数を使用して HTML ハイパーリンクを作成できます。
function callback($match) { $completeUrl = $match[1] ? $match[0] : "http://{$match[0]}"; return '<a href="' . $completeUrl . '">' . $match[2] . $match[3] . $match[4] . '</a>'; }
プロトコルが指定されていない場合、この関数は先頭に「http://」を付加します。そして、検出された URL を href 属性として使用して HTML アンカー タグを作成します。
正規表現とCallback
最後に、preg_replace_callback を使用して正規表現を適用し、検出されたすべての URL のハイパーリンクを作成できます。
$text = "Here are some URLs: stackoverflow.com/questions/1188129/pregreplace-to-detect-html-php"; print preg_replace_callback($regex, 'callback', htmlspecialchars($text));
これにより、検出された URL がクリック可能なリンクに変換されたテキストが出力されます。 .
追加考慮事項
以上が正規表現を使用して PHP テキスト内の URL を検出してリンクするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。