gracias josemi, lo probe y ese era el error pero en el caso de que un usuario no tan distraido coloque
 osea la direccion SIN el "http://"
aparece:
http://www.mipagina.com/www.algo.com 
por otra parte encontre este codigo: 
 Código PHP:
    function parsearurl($mensaje){
 
    $urlBuscarArray = array(
      "/([^]_a-z0-9-=\"'/])((https?|ftp|gopher|news|telnet)://|www.)([^ \r\n()^\$!`\"'|[]{}<>]*)/si",
      "/^((https?|ftp|gopher|news|telnet)://|www.)([^ \r\n()^\$!`\"'|[]{}<>]*)/si"
    );
 
    $urlRemplazarArray = array(
      "\1[url]\2\4[/url]",
      "[url]\1\3[/url]"
    );
 
    $emailBuscarArray = array(
      "/([ \n\r\t])([_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,4}))/si",
      "/^([_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,4}))/si"
    );
 
    $emailRemplazarArray = array(
      "\1[mail]\2[/mail]",
      "[mail]\0[/mail]"
    );
 
  $texto = preg_replace($urlBuscarArray, $urlRemplazarArray, $mensaje);
  if (strpos($texto, "@")) {
    $texto = preg_replace($emailBuscarArray, $emailRemplazarArray, $texto);
  }
  return $texto;
  
} 
    
  ¿seria asi el uso?
$mensaje = parsear($mensaje); 
Desde ya muchas gracias