Youtube()A estas alturas supongo que los que lean este blog seguramente sepan que hace esta función. Es una función que a partir de una ID de youtube extrae el resto de datos del mismo video...
El motivo de esta actualización es el aviso de @pablo que me indicaba que en la versión 1 se la función si que se obtener el usuario que ha subido el video, asi que esa ha sido la primera corrección.
Revisando el código a demás me di cuenta que la fecha también fallaba, así como el debug de fecha, y como guinda.. mucha gente esta usando la direccion de youtube completa para obtener el ID y para los usuarios menos expertos es un coñazo el extraerlo.. así que he incorporado el metodo que el genio Alex Barros diseño en Boozox y uno de sus lectores @Javier compartieron para que ahora podamos ver los vídeos no solo con la ID si no que también con la URL.

PHP:
  1. function youtube($id, $debug = false) {
  2.     $_id = parse_url($id);
  3.     parse_str($_id['query']);
  4.     unset($_id);
  5.     $id = empty($v) ? $id : $v;
  6.  
  7.     $url = 'http://es.youtube.com/watch?v='.$id;
  8.     $query = @file_get_contents($url);
  9.    
  10.     $exp_info = '!&t=(.+)&!U';
  11.     preg_match_all($exp_info,$query,$t);
  12.    
  13.     $exp_info = "!<meta name=\"title\" content=\"(.+)\">!U";
  14.     preg_match_all($exp_info,$query,$titulo);
  15.    
  16.     $exp_info = "!<meta name=\"description\" content=\"(.+)\">!U";
  17.     preg_match_all($exp_info,$query,$descripcion);
  18.        
  19.     $exp_info = "!<span class=\"watch-video-added post-date\">(.+) de (.+) de (.+)</span>!U";
  20.     preg_match_all($exp_info,$query,$fecha);
  21.    
  22.     $exp_info = "<meta name=\"keywords\" content=\"(.+)\">";
  23.     preg_match_all($exp_info,$query,$tags);
  24.    
  25.     $exp_info = "!href=\"/user/(.+)\"!U";
  26.     preg_match_all($exp_info,$query,$user);
  27.    
  28.     $t        = $t[1][0];
  29.     $titulo   = $titulo[1][0];
  30.     $descripcion    = $descripcion[1][0];
  31.     $fecha      = ($fecha[1][0]&&$fecha[2][0]&&$fecha[3][0]) ? $fecha[1][0].' de '.$fecha[2][0].' de '.$fecha[3][0] : '';
  32.     $tags         = $tags[1][0];
  33.     $user         = $user[1][0];
  34.            
  35.     $salida["id"]         = $id;
  36.     $salida["t"]            = $t;
  37.     $salida["url"]      = $url;
  38.     $salida["iurl"]   = "http://img.youtube.com/vi/".$id."/2.jpg";
  39.     $salida["reproductor"]  = "http://www.youtube.com/p.swf?video_id=".$id."&iurl=http://img.youtube.com/vi/".$id."/2.jpg&t=".$t;
  40.     $salida["video"]        = "http://youtube.com/get_video.php?video_id=".$id."&t=".$t;
  41.     $salida["html"]   = "<object width=\"425\" height=\"350\"><param name=\"movie\" value=\"http://www.youtube.com/v/".$id."\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.youtube.com/v/".$id."\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"350\"></embed></object>";
  42.     $salida["title"]        = $titulo;
  43.     $salida["descripcion"]  = $descripcion;
  44.     $salida["fecha"]        = $fecha;
  45.     $salida["tags"]   = $tags;
  46.     $salida["usuario"]    = $user;
  47.  
  48.     if($debug){
  49.         //sistema de diagnostico
  50.         $salida['debug']                = $query;
  51.         $s['la url de lectura es']    = $url;
  52.         $s['lectura de video']      = ($query  )    ? 'si' : 'no' ;
  53.         $s['t encontrado']        = ($t   )    ? 'si' : 'no' ;
  54.         $s['titulo encontrado']   = ($titulo      )  ? 'si' : 'no' ;
  55.         $s['descripcion encontrada']    = ($descripcion )    ? 'si' : 'no' ;
  56.         $s['fecha encontrada']      = ($fecha  )    ? 'si' : 'no' ;
  57.         $s['tags encontrados']      = ($tags    ) ? 'si' : 'no' ;
  58.         $s['usuario encontrado']        = ($user        )   ? 'si' : 'no' ;
  59.         $s['contenido para debug']    = $salida;
  60.         return  $s;
  61.     }
  62.     if($t == ""){ //Error de conexion
  63.         return false;
  64.     } else { // todo OK
  65.         return $salida;
  66.     }
  67. }

Un ejemplo con ID:

PHP:
  1. $datos = youtube('aWCD69urAqQ');
  2. print_r($datos);

El mismo ejemplo de antes pero esta vez con la URL completa:

PHP:
  1. $datos = youtube('http://es.youtube.com/watch?v=aWCD69urAqQ&fmt=18');
  2. print_r($datos);

He sacado una nueva version que corrige errores de peticion y caracteres. la podeis encontrar en Función de extracción de datos Youtube() en PHP version4