模仿PHP 中Stack Overflow 的自動連結功能
Stack Overflow 的自動連結行為非常方便,讓使用者可以輕鬆連結到網站或貼文中的特定內容。本文探討如何在 PHP 中實現類似的功能,利用正規表示式模式來識別 URL 並將其轉換為 HTML 連結。
要了解內部運作原理,讓我們分解提供的程式碼:
<code class="php">/** * Replace links in text with html links * * @param string $text * @return string */ function auto_link_text($text) { // a more readably-formatted version of the pattern is on http://daringfireball.net/2010/07/improved_regex_for_matching_urls $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`!()\[\]{};:\'".,<>?«»“”‘’]))'; $callback = create_function('$matches', ' $url = array_shift($matches); $url_parts = parse_url($url); $text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH); $text = preg_replace("/^www./", "", $text); $last = -(strlen(strrchr($text, "/"))) + 1; if ($last < 0) { $text = substr($text, 0, $last) . "&hellip;"; } return sprintf(\'<a rel="nofollow" href="%s">%s</a>\', $url, $text); '); return preg_replace_callback($pattern, $callback, $text); }</code>
分解正規表示式模式:
正規表示式模式初始化貪婪搜尋(?i) 並找出以下段落:
|(( 5
)))
)|6
)) 自訂回調函數:
範例輸入和輸出:
「這是我的文字。我想知道您是否知道如何在StackOverflow 上提問:查看https:// /m.sbmmt.com/link/6e212075e04d1616b06a5e1398e10053
還有base_convert php函數? link/63c0d1be32c9c7e2dee3ac21690e490chttps:// www。 🎜>"這是我的文字,不知道你知不知道在StackOverflow問問題:看這是
透過實作這些技術,開發人員可以輕鬆地將Stack Overflow 的自動連結功能合併到他們的PHP 應用程式中,從而增強使用者體驗並簡化作者和讀者的內容引用。 ()
↩以上是如何在 PHP 中實作 Stack Overflow 的自動連結功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!