Ver Mensaje Individual
  #13 (permalink)  
Antiguo 03/05/2007, 09:31
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: Cortar Url/link dentro de un string.

Está medio enredado, pero ahora no tengo tiempo de depurarlo, fijate si así te va mejor:
Código PHP:
<?php 
function get_links($string) {
    
$patron='/\<a href\=(.*?)\>(.*?)\<\/a\>/is';
    
preg_match_all ($patron$string,$coincidencias);
    return 
$coincidencias[0];
};
function 
get_links_text($string) {
    
$patron='#[^<ref=">]http\:\/\/([^"<>]*)#is';
    
preg_match_all ($patron$string,$coincidencias);
    return 
$coincidencias[0];
    
};
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;
}

function 
redlink2($link,$largopartes){
    if(
strlen($link)>($largopartes<<1))
        
$r='<a href="'.$link.'">'.substr($link,0,$largopartes).'...'.substr($link,-$largopartes).'</a>';
    else
        
$r='<a href="'.$link.'">'.$link.'</a>';
        return 
$r;
}

$cadena='hola http://www.akjhas.dasa/asasa/asasasas/asas.pl <br><a href="http://www.google.com.ar">Este es un magnífico buscador y en él hay de todo</a>';
$links=get_links($cadena);
$urls=get_links_text($cadena);
foreach(
$links as $v){
    
$replace[]=redlink($v,5);
}
foreach(
$urls as $v){
    
$replace[]=redlink2($v,5);
}
$search=array_merge($links,$urls);
echo 
str_replace($search,$replace,$cadena);
?>