He encontrado por ahí una función que sirve para convertir texto plano en hípervinculos, en este caso sería texto que viene de una base de datos en MySql. El caso es que querría retocar eso para que en el caso de los links largos aparezca sólo un texto como hípervinculo en vez del típico: http:// la función que estoy usando la saque de esta web: http://techjunk.websewak.com/convert...ext-using-php/ y luego le he intentado añadir un str_replace para que haga lo que yo quiero pero no termina de funcionar.
La idea es que el usuario escriba en el campo de links los enlaces así: Google y esta función mediante el str_replace y el resto de cosas que tiene muestre esto <a href="http://www.google.com"]Google</a> y el texto de Google sea un hipervínculo a "http://www.google.com".
En uno de los casos he conseguido que poniendo Google me cree un texto Google que es un hipervínculo pero en vez ser un hipervínuclo a "http://www.google.com" es un hipervínculo a "http://localhost/sitio/ww.google.com". Si en vez de ponerlo http lo pongo sólo con www simplemente no funciona.
Si podéis echarme un cable o darme un consejo sobre que es lo que falla, os lo agradecería mucho.
Saludos
Código PHP:
function makeClickableLinks($text)
{
$text = html_entity_decode($text);
$text = " ".$text;
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a href="\\1" target=_blank>\\1</a>', $text);
$text = eregi_replace('(((f|ht){1}tps://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a href="\\1" target=_blank>\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'\\1<a href="http://\\2" target=_blank>\\2</a>', $text);
$text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
'<a href="mailto:\\1" target=_blank>\\1</a>', $text);
/* Esta parte la ha añadido yo */
$enlaces1 = array('[url="','"]','[/url]');
$enlaces2 = array('<a href="','">','</a>');
$text = str_replace($enlaces1, $enlaces2, $text);
/* Esta parte la ha añadido yo */
return $text;
}