我有一串由用户生成的文本。 我需要将文本中的任何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>
我是如何操作正则表达式匹配中的文本的?
答案 0 :(得分:1)
一种方法是将URL文本放在<span style="overflow:hidden; width: 75px;">
中注意,在将其插入DOM之前,您可能希望对您的链接进行encodeURI()。