Identificar videos de YouTube en publicaciones de usuarios

  • Autor Autor perafan18
  • Fecha de inicio Fecha de inicio
P

perafan18

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola Betas 🙂
estoy haciendo una web donde los usuarios pueden hacer publicaciones y compartir vídeos de Youtube pero el problema es que no se como hacer un función o algo que me ayude a detectar si un vídeo es de youtube.

Alguien sabe como se puede hacer?
lo que tengo ahorita es esto..
PHP:
 <?
 if(isset($_POST['videoenviado']))
 {
 if($_POST['video']!=NULL){
 $video = $_POST['video'];
 $video = substr("$video",31,11);
 
 $status ='
<center><div style="float:left;margin-top:10px;margin-bottom:10px;margin-left:45px;width:600px;text-align:center;">
<iframe width="472" height="354" src="http://www.youtube.com/embed/'.$video.'" frameborder="0" allowfullscreen></iframe>
</div>
<hr width=590>
</center><br/>';
//insertar en base de datos
 $sql= mysql_query("INSERT INTO status SET status='$status'");
 }
 }
 ?>
 
Primero te diría que no guardes toda esa información en la base de datos, con tan sólo guardar el ID del video alcanza, luego esa información puedes imprimirla al momento de mostrar el video, utilizando el ID guardado en la base de datos.

Además la forma en que "extraes" el id de la url no es correcta, debes hacerlo con expresiones regulares (puede que alguien ponga la url con o son www, entre otras variantes).

Y por último para ver si un video existe la mejor forma me parece que es utilizando la API de YouTube.

Saludos!
 
Si, coincido lo mismo que lucianoche, te vendría mas fácil revisar la API que YouTube para facilitarte el trabajo. Mira el siguiente link ahi esta todo: YouTube - Broadcast Yourself
 
Muchas gracias! pero sigo teniendo mi duda no hay alguna forma de que yo pueda detectar que el URL es de Youtube? Por que los usuarios podrían poner un URL que no sea de Youtube y eso generaría un error.
 
Una opción sería usar la función strstr() para comprobar que la URL contenga youtube.com/watch?v= y la función strlen() para comprobar que la ID del video sea de 11 caracteres:

PHP:
<?php
function isValidYoutubeURL($URL) {
	if ((strstr($URL,"youtube.com/watch?v=")) && (strlen(strstr($URL,"watch?v=")) == "19")) {
		return true;
	} else {
		return false;
	}
}

if (isValidYoutubeURL("http://www.youtube.com/watch?v=lETmskoqh30")) {
echo "La URL pertenece a un video de YouTube :)";
} else {
echo "La URL no pertenece a un video de YouTube :(";
}
?>
 
Con esto, no te puedes quejar lo hize hace tiempo para un proyecto que se perdio :/ mp3deyoutube.com :sorrow:

PHP:
<?php

 function verificar_yt($url) { 
   /* programador jpmaster.net@gmail.com */
    preg_match('#^(?:https?://)?(?:www\.)?(?:youtube\.com(?:/embed/|/v/|/watch\?v=))([\w-]{11})(?:.+)?$#x', $url, $r); 
    //print_r($r);
    return (isset($r[1]) && !empty($r[1])) ? $r[1] : false; 
 
 }
 
 /*
 Funciona con todas estas urls
 http://www.youtube.com/embed/g-SsgHUzc10
 http://www.youtube.com/v/g-SsgHUzc10
 http://www.youtube.com/watch?v=g-SsgHUzc10
 http://www.youtube.com/watch?v=g-SsgHUzc10&feature=g-all-lik

 */
 
 $link = 'http://www.youtube.com/watch?v=g-SsgHUzc10&feature=g-all-lik';
 if(verificar_yt($link)){
    printf('id extraida : <b>%s</b>', verificar_yt($link));
 }else{
    die('**** error xD');
 }
 
Última edición:
Atrás
Arriba