Foros del Web » Programando para Internet » PHP »

urls de youtube. que falta para que funcione 100%?

Estas en el tema de urls de youtube. que falta para que funcione 100%? en el foro de PHP en Foros del Web. cada vez que se crea una nota el usuario puede poner url de video en el textArea hago esto para mostrarlas como video. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 27/08/2012, 13:11
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
urls de youtube. que falta para que funcione 100%?

cada vez que se crea una nota el usuario puede poner url de video en el textArea

hago esto para mostrarlas como video.

Código PHP:
Ver original
  1. $textarea=str_replace("feature"," ",$textarea);//remplazo feature para que no haya problema
  2.         $urls = getUrls($textarea);//obtengo todas las urls que hay
  3.         $i=0;
  4.  
  5.         foreach($urls as $url)
  6.         {
  7.        
  8.             $rs["video"]=$url;
  9.             $rs["video"]=str_replace("watch?v=","v/",$rs["video"]);
  10.             $rs["video"]=str_replace("http://youtu.be/","http://www.youtube.com/v/",$rs["video"]);
  11.             $rs["video"]=str_replace("http://www.youtube.com/embed/","http://www.youtube.com/v/",$rs["video"]);
  12.            
  13.             if(stristr($rs["video"], 'http://www.youtube.com/v/') == TRUE or stristr($rs["video"], 'https://www.youtube.com/v/')==TRUE)       {
  14.            
  15.             $videos[$i]='<object width="150" height="150"><param name="movie" value="'.$rs["video"].'&hl=es&fs=1&rel=0"></param>
  16.             <param name="type" value="application/x-shockwave-flash">
  17.             <param name="wmode" value="opaque" />
  18.             <embed src="'.$rs["video"].'&hl=es&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always"            allowfullscreen="true" width="150" height="150"></embed>
  19.             </object>';
  20.  
  21.              $urlList[$i]=$rs["video"];
  22.              $i++;
  23.              }
  24.         }
aqui la que obtiene las urls

Código PHP:
Ver original
  1. function getUrls($string)
  2. {
  3.     $regex = '/https?\:\/\/[^\" ]+/i';
  4.     preg_match_all($regex, $string, $matches);
  5.     return ($matches[0]);
  6. }
puede leer todas las clases de urls que ven alli, que sean de youtube.
mi problema es que pasa si solo el usuario agrega esto?

http://www.youtube.com/watch?v=

osea incompleta, pero la condición se cumple y el problema es que muestro el video en una lista de todas las urls que puso el usuario siempre y cuando sean de youtube.
como podria averiguar que los 11 caracteres de la id del video de youtube que siguen, son validos?
por que no solo es ese el detalle si no tambien este
http://www.youtube.com/watch?v=12345678910

osea que ponga un valor no valido ocasionando que se cree un marco mas en la lista donde deberia ir un video valido, entonces solo muestra el marco en blanco.
talvez si en vez de mostrarlo en divs cada video podria mostrarlo tal y como ponen las urls en el texto. pero pues yo lo quiero hacer asi.
hay alguna forma?

Última edición por minombreesmm; 27/08/2012 a las 13:18
  #2 (permalink)  
Antiguo 27/08/2012, 15:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: urls de youtube. que falta para que funcione 100%?

Yo uso esto:

Código PHP:
Ver original
  1. function youtube_id($value) {
  2.   $match = preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $value, $matches);
  3.   if(count($matches) > 0) {
  4.       return $matches[0];
  5.   }
  6.   return false; // No es una ID válida
  7. }
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: idvideo, url, video, youtube
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:53.