2013-12-10 21 views
0

我有一串由用戶生成的文字。 我需要將文本中的任何網址轉換爲鏈接(url),並且在錨文本很長的情況下(url)將其縮短(非常類似於StackOverflow縮短url鏈接中錨點的方式)。使網址可點擊並縮短文字

我目前使用這個PHP代碼的URL轉換的文本鏈接:

return preg_replace(
     "/(?<!a href=\")(?<!src=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i", 
     "<a href=\"\\0\" target=\"blank\" rel=\"nofollow\">\\0</a>",$s); 

這似乎爲我測試的最網址。

問題是如何縮短錨文本,如果它太長?

例如。本文:

以下是一些文字,鏈接http://www.google.com/search?q=bla%20bla%20bla應該可以鏈接。 這個網址是足夠短,以顯示一切:http://bit.ly/blabla

應轉換成這樣:

Here is some text with a link <a href="https://www.google.com/search?q=bla%20bla%20bla">https://www.google.com/search...</a> that should be linkable. 
This url is short enough to show everything: <a href="http://bit.ly/blabla">http://bit.ly/blabla</a> 

任何想法如何,我可以操縱的正則表達式匹配的文本?

回答

1

一種方法是將URL文本放入<span style="overflow:hidden; width: 75px;">請注意,在將其插入DOM之前,您可能需要先對鏈接進行encodeURI()編碼。

+1

謝謝。我想在服務器上執行此操作,以確保在所有設備上獲得一致的體驗。 (順便說一下,不知道爲什麼你的答案被拒絕或爲什麼我的問題被拒絕) – Guy