codice:
function urlLength( $url, $length ) {
$st = '<a href="'.$url.'">';
if( ( $a = strlen( $url ) ) > $length ) {
$b = floor( $length / 2 );
$url = substr( $url, 0, $b )."...".substr( $url, -( $b - 3 ) );
}
return $st.$url.'</a>';
}
$urlMaxLength = 20;
$st = "askdaidm [LINK]http://www.asd.it/dwadwadwadwadadwadwadw[/LINK] asdasd";
echo preg_replace( "/(?i)\[link\]([^\a]+?)\[\/link\]/e", "urlLength( \"\\1\", {$urlMaxLength} )", $st );
P.S. eval puo' essere usato direttamente nella preg aggiungendo e in fondo