Usage example: Function: function parse_urls($text, $maxurl_len = 35, $target = '_self') { if (preg_match_all('/((ht|f)tps?:\/\/([\w\.]+\.)?[\w-]+(\.[a-zA-Z]{2,4})?[^\s\r\n\(\)"\'<>\,\!]+)/si', $text, $urls)) { $offset1 = ceil(0.65 * $maxurl_len) - 2; $offset2 = ceil(0.30 * $maxurl_len) - 1; foreach (array_unique($urls[1]) AS $url) { if ($maxurl_len AND strlen($url) > $maxurl_len) { $urltext = substr($url, 0, $offset1) . '...' . substr($url, -$offset2); } else { $urltext = $url; } $text = str_replace($url, ''. $urltext .'', $text); } } return $text; }