Hola, Nico, a ver si algo así te sirve:
Código PHP:
<?php
function redlink($link,$largopartes){
$patron='/\<a href\=(.*?)\>(.*?)\<\/a\>/i';
preg_match_all ($patron, $link,$coincidencias);
$s='/\<a href\=(.*?)\>(.*?)\<\/a\>/se';
if(strlen($coincidencias[2][0])>($largopartes<<1))
$r='"<a href=$1>".substr("$2",0,"$largopartes")."...".substr("$2","-$largopartes")."</a>"';
else
$r='"<a href=$1>$2</a>"';
$t=preg_replace ($s, $r, $link);
return $t;
}
$l='<a href="index.php">este es un link muy pero muy largo </a>';
$l2='<a href="index.php">link</a>';
echo redlink($l,5);
echo '<br>'.redlink($l2,5);
?>