我有一个小函数,它遍历一堆文本并以文本形式查找任何 url 并将它们转换为 html a's:
例如
normal text lipsum etc http://www.somewebsitelink.com lipsum lipsum
变成:
normal text lipsum etc <a href="www.somewebsitelink.com">http://www.somewebsitelink.com</a> lipsum lipsum
我的功能如下:
function linkify($text)
{
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a target="_blank" href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'\\1<a target="_blank" href="http://\\2">\\2</a>', $text);
return $text;
}
一切正常,但是我使用此功能并打印出 html 的地方是在有限的宽度空间中,有时链接最终会变得更大,然后可以容纳在空间中,最终导致溢出。
我想知道如何去做两件事:
一个。从文本中删除不必要的,即“http://”,所以我最终会得到
<a href="http://www.somewebsitelink.com">www.somewebsitelink.com</a>
和
湾。如果文本超过 20 个字符,请将其后面的所有内容剪掉并添加几个点。例如:
<a href="http://www.somewebsitelink.com">www.somewebsitelin...</a>
我想知道我是否可能不得不在不使用正则表达式的情况下这样做,但是我对 reg exp 的理解还是相当有限的。