gpt4 book ai didi

php - 正则表达式中的 StackOverflow 样式 A Href 自动链接

转载 作者:搜寻专家 更新时间:2023-10-31 21:43:41 25 4
gpt4 key购买 nike

我正在使用 below 功能来搜索文本链接并将它们转换为超链接。首先它是正确的吗?它似乎有效,但您是否知道会破坏此功能的(可能格式错误的)网址?

我的问题是是否有可能让它也支持端口号,例如 stackoverflow.com:80/index 不会被转换,因为端口不被视为有效部分的网址。

总而言之,我正在寻找 Stackoverflow 样式的 url 识别,我认为这是对 Markdown 的自定义添加。

  /**
* Search for and create links from urls
*/
static public function autoLink($text) {
$pattern = "/(((http[s]?:\/\/)|(www\.))(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is";
$text = preg_replace($pattern, " <a href='$1'>$1</a>", $text);
// fix URLs without protocols
$text = preg_replace("/href='www/", "href='http://www", $text);

return $text;
}

谢谢你的时间,

最佳答案

你还应该看看这个问题的答案:How to mimic StackOverflow Auto-Link Behavior


我最终结合了我在堆栈溢出和与同事交谈时得到的答案。下面的代码是我们能想到的最好的代码。

/**
* Search for and create links from urls
*/
static public function autoLink($text) {
$pattern = "/\b((?P<protocol>(https?)|(ftp)):\/\/)?(?P<domain>[-A-Z0-9\\.]+)[.][A-Z]{2,7}(([:])?([0-9]+)?)(?P<file>\/[-A-Z0-9+&@#\/%=~_|!:,\\.;]*)?(?P<parameters>\?[A-Z0-9+&@#\/%=~_|!:,\\.;]*)?/ise";
$text = preg_replace($pattern, "' <a href=\"'.htmlspecialchars('$0').'\">$0</a>'", $text);

// fix URLs without protocols
$text = preg_replace("#href='www#i", "href='http://www", $text);
$text = preg_replace("#href=['\"](?!(https?|ftp)://)#i", "href='http://", $text);

return $text;
}

关于php - 正则表达式中的 StackOverflow 样式 A Href 自动链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7164855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com