我使用以下的函數來搜索文本鏈接並將它們轉換爲超鏈接。首先是正確的?它似乎工作,但你知道一個(可能畸形)的URL會打破這個功能?StackOverflow樣式A Href在正則表達式中自動鏈接
我的問題是是否有可能得到這個支持端口號,例如stackoverflow.com:80/index
不會被轉換,因爲該端口不被視爲url的有效部分。
因此,總的來說,我正在尋找Stackoverflow風格的網址識別,我相信這是對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;
}
感謝您的時間,
你的函數不適用於URL到子域名(例如'my.domain.com/mypage') – meagar
你想要的東西有多準確? [www.ca](http://www.ca)完全有效的網址,但不是您期望定期看到的網址。有很多東西是主機名,但絕對看起來不像一個。 –
理想情況下,覆蓋所有可能性,但我懷疑任何人都會指向像www.ca這樣的網址,看看堆棧溢出的效果如何,看起來非常好! –