首頁 >後端開發 >php教程 >如何在 PHP 中模仿 Stack Overflow 的自動連結行為?

如何在 PHP 中模仿 Stack Overflow 的自動連結行為?

Barbara Streisand
Barbara Streisand原創
2024-10-29 20:14:03803瀏覽

How to Mimic Stack Overflow's Auto-Link Behavior in PHP?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn