Vincule las URL con PHP, recorte la longitud de las URL generadas

Estoy tratando de formatear automáticamente el texto a los enlaces en PHP, pero para recortar las URL largas a un límite máximo de caracteres. Y también elimine ‘http (s)’ del texto enviado.

blah blah http://example.com/some-long-slug-goes-here foo

debe traducir a:

blah blah example.com/some-long-sl... foo ( blah blah example.com/ algo-largo-sl … foo )

Encontré una solución preg_replace aquí: ¿Cómo puedo vincular las URL en una cadena con php? pero soy incapaz de editarlo según mis necesidades.

 $string = preg_replace( "~[[:alpha:]]+://[^[:space:]]+[[:alnum:]/]~", "\\0", $string ); 

Crea un grupo de captura después del protocolo:

 $string = preg_replace( "~[[:alpha:]]+://([^<>[:space:]]+[[:alnum:]/])~", "\\1", $string ); 

entonces \1 será la URL sin el protocolo. Para la limitación del texto, recomendaría usar CSS, estableciendo una longitud máxima de caracteres en css .