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