首页 >后端开发 >php教程 >如何在 PHP 中模仿 Stack Overflow 的自动链接行为?

如何在 PHP 中模仿 Stack Overflow 的自动链接行为?

Barbara Streisand
Barbara Streisand原创
2024-10-29 20:14:03805浏览

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

在 PHP 中模仿 Stack Overflow 的自动链接行为

许多 Stack Overflow 用户都对该平台的自动链接功能表示钦佩。本文探讨了如何在 PHP 中复制此类行为,使您能够将 URL 转换为自己文本中具有视觉吸引力的链接。

自动链接正则表达式

以下内容PHP 函数利用 Daring Fireball 中的正则表达式模式来识别文本中的 URL:

<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 链接:

Input: This is my text. Check This out http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior

Output: This is my text. Check This out <a href="http://www.stackoverflow.com/questions/1925455/how-to-mimic-stackoverflow-auto-link-behavior">stackoverflow.com/questions/1925455/...</a>

以上是如何在 PHP 中模仿 Stack Overflow 的自动链接行为?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn