偵測文字中的URL 並將其轉換為HTML 連結
在各種線上應用程式中,將文字中提到的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]+?)?'; $rex = "&\b$rexProtocol$rexDomain$rexPort$rexPath$rexQuery$rexFragment(?=[?.!,;:\"]?(\s|$))&";
實作
我們可以使用preg_match_all() 來尋找文本中的所有URL 匹配:
preg_match_all($rex, htmlspecialchars($text), $matches, PREG_OFFSET_CAPTURE);
轉換為HTML連結
我們將循環匹配並建立適當的 HTML 連結:foreach ($matches[0] as $match) { $url = $match[0]; $domain = $matches[2][0]; $path = $matches[4][0]; $completeUrl = $matches[1][0] ? $url : "http://$url"; $htmlLink = "<a href='$completeUrl'>$domain$path</a>"; $text = str_replace($url, $htmlLink, $text); }
以上是如何在 PHP 中偵測 URL 並將其轉換為 HTML 連結?的詳細內容。更多資訊請關注PHP中文網其他相關文章!