使网址可点击并缩短文字

时间:2013-12-10 21:59:40

标签: php

我有一串由用户生成的文本。 我需要将文本中的任何url转换为链接(url),如果锚文本很长(url)缩短它(非常类似于StackOverflow缩短url链接中的锚点)。

我目前正在使用此PHP代码将文本中的网址转换为链接:

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 个答案:

答案 0 :(得分:1)

一种方法是将URL文本放在<span style="overflow:hidden; width: 75px;">中注意,在将其插入DOM之前,您可能希望对您的链接进行encodeURI()。