首頁  >  文章  >  後端開發  >  如何在 PHP 中模仿 Stack Overflow 的自動連結功能?

如何在 PHP 中模仿 Stack Overflow 的自動連結功能?

Linda Hamilton
Linda Hamilton原創
2024-10-30 13:32:27635瀏覽

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

模仿 Stack Overflow 的自動連結功能

要增強 Web 內容,請考慮模擬 Stack Overflow 的自動連結功能。此函數可以將純 URL 轉換為視覺上吸引人的超連結。

在PHP 中實作

這是一個受Stack Overflow 行為啟發的PHP 函數:

<code class="php">function auto_link_text($text)
{
   // URL matching regex pattern from Daring Fireball
   $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) . "&amp;hellip;";
       }

       return sprintf(\'<a rel="nofollow" href="%s">%s</a>\', $url, $text);
   ');

   return preg_replace_callback($pattern, $callback, $text);
}</code>

範例

範例
<code class="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</code>
範例

。 >

<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/&hellip;</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/&hellip;</a>

<a rel="nofollow" href="http://pt.php.net/manual/en/function.base-convert.php?wtf=hehe#52450">pt.php.net/manual/en/&hellip;</a></code>
考慮以下輸入文本:

使用auto_link_text 函數,此文本將被轉換:

    自定義
  • 您可以透過修改回呼函數來自訂連結行為。例如,您可以:
  • 更改連結文字格式

向連結標記新增其他屬性

從自動連結中排除某些網址 透過調整實現,您可以建立滿足您特定需求的自訂自動連結解決方案。

以上是如何在 PHP 中模仿 Stack Overflow 的自動連結功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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