在 PHP 中模仿 Stack Overflow 的自動連結行為
許多 Stack Overflow 使用者都對此平台的自動連結功能表示欽佩。本文探討如何在 PHP 中複製此類行為,使您能夠將 URL 轉換為自己文字中具有視覺吸引力的連結。
自動連結正規表示式
以下內容PHP 函數利用Daring Fireball 中的正規表示式模式來辨識文字中的網址>
<code class="php">function auto_link_text($text) { $pattern = '(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'"",<>?«»“”‘’]))'; ... }</code>
格式化連結
一旦辨識出URL,函數就會解析它提取主機和路徑。然後,此資訊用於建立連結文本,並顯示給使用者:<code class="php">... $text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH); $text = preg_replace("/^www./", "", $text); $last = -(strlen(strrchr($text, "/"))) + 1; ...</code>
使用範例
要使用該功能,只需傳遞您的文字將其作為參數:<code class="php">$text = "..."; $linked_text = auto_link_text($text);</code>
輸出
函數將傳回輸入文本,並將URL 轉換為HTML 連結:以上是如何在 PHP 中模仿 Stack Overflow 的自動連結行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!