模仿Stack Overflow 使用PHP 自動產生連結
Stack Overflow 的使用者友善自動連結功能增強了使用者參與度和資訊可存取性。本文介紹了受此功能啟發的 PHP 函數,可將 URL 無縫轉換為超連結內容。
提供的函數利用強大的正規表示式模式來辨識 URL。然後,它從 URL 中提取必要的組成部分,例如網域和路徑。透過截斷過長的 URL,確保視覺上美觀、簡潔。
功能實作:
<code class="php">function auto_link_text($text) { // Daring Fireball's URL-matching regex pattern $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`!()\[\]{};:\'".,<>?«»“”‘’]))'; // Regex callback function for URL processing $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>
使用範例:
<code class="php">$input_text = "This is my text. I wonder if you know about asking questions on StackOverflow: Check This out http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior Also, base_convert php function? http://pt.php.net/manual/en/function.base-convert.php#52450 http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450"; $output_text = auto_link_text($input_text);</code>
輸入文字:
This is my text. I wonder if you know about asking questions on StackOverflow: Check This out http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior Also, base_convert php function? http://pt.php.net/manual/en/function.base-convert.php#52450 http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450
輸出文字:
<code class="html">This is my text. I wonder if you know about asking questions on StackOverflow: Check This out <a rel="nofollow" href="http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior">stackoverflow.com/questions/1925455/…</a> Also, base_convert php function? <a rel="nofollow" href="http://pt.php.net/manual/en/function.base-convert.php#52450">pt.php.net/manual/en/…</a> <a rel="nofollow" href="http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450">pt.php.net/manual/en/…</a></code>
此功能模擬自訂PHP 函數有效類比訂Stack Overflow 自動連結功能,將URL 轉換為超鏈接,以增強可讀性和使用者體驗。
以上是如何使用 PHP 模擬 Stack Overflow 的自動連結行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!