HTML del visor de Youtube a partir de su URL
Escrito por Alex Barros Esta es una función que acabo de crear para transformar una URL de un vídeo de youtube en el código HTML del visor.
Aúnque la URL sea de las enrevesadas, la función sigue interpretando correctamente.
http://es.youtube.com/watch?v=V0w2D0Kxq3Q&feature=PlayList&p=0704B55480867B61&index=3&playnext=1&playnext_from=PL
La magia reside en la expresión regular que me he currado
^http://([^\.]{0,2}\.)?youtube.com/watch\?.*v=([^&]+)&?.*$
Podéis usarla para lo que os de la gana, la licencia es Dominio Público.
-
function youtubeUrlToHTML($url, $width = 425, $height = 344) {
-
$key = $regs[2];
-
-
return ‘<object width="’.$width.‘" height="’.$height.‘"><param name="movie" value="http://www.youtube.com/v/’.$key.‘&hl=es&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/’.$key.‘&hl=es&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="’.$width.‘" height="’.$height.‘"></embed></object>’;
-
}
Y si crees que la puedes mejorar… a que no me dices eso en la calle!!
Mejor dilo en los comentarios
Aportación de Javier:
Javier propone una forma de hacer lo mismo sin utilizar expresiones regulares, haciendo uso de parse_url y parse_str:
-
function youtubeUrlToHTML($url, $width = 425, $height = 344) {
-
-
return ‘<object width="’.$width.‘" height="’.$height.‘"><param name="movie" value="http://www.youtube.com/v/’.$key.‘&hl=es&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/’.$key.‘&hl=es&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="’.$width.‘" height="’.$height.‘"></embed></object>’;
-
}
Muchas gracias por tu aportación!
Categorias: Código |



Respeta el copyleft
Septiembre
15:26 Javier Ha dicho:
Felicidades por el blog, soy uno más de tus lectores por RSS. Yo qyer escribí una función parecida para un cliente pero sin expresiones regulares (las evito siempre que puedo), a ver si puedes leerla correctamente:
function youtubeUrlToHTML($url, $width = 425, $height = 344) {
parse_str( parse_url( $url, PHP_URL_QUERY ) );
$key = !empty( $v ) ? $v : $url;
return ”;
}
Septiembre
15:44 hanok Ha dicho:
Gracias por compartirla, le voy a dar mucha utilidad a la función
Solo le encuentro el pequeño incoveniente de que en la expresión regular se comprueban solo las 2 primeras letras [es], por lo que si la URL viene de la web http://www.youtube.com, no la reconoce…
Un saludo.
Septiembre
16:27 Alex Barros Ha dicho:
@Javier: Interesantísima tu versión, no se me habría ocurrido. Pero no hay que tener miedo a las Regex, son nuestras amigas
@hanok: Me alegra mucho que te vaya a servir. Lo de las www lo pensé, pero si te das cuenta, al escribir esa dirección, te redirije a otra sin las www, lo que me llevó a pensar quenunca se daría.
Si alguien tiene miedo de que puedan existir prefijos del dominio con tres letras, no tiene más que cambiar el dos por un tres:
^http://([^\.]{0,3}\.)?youtube.com/watch\?.*v=([^&]+)&?.*$
Septiembre
18:31 Javier Ha dicho:
Alex en ocasiones veo expresiones regulares…..
Septiembre
1:47 Clic AQUI Ha dicho:
Lo que yo ando invesitgando es sobre la funcion parse_url(), lo que pasa que necesito que las url de un iframe cuando lo llamo el explorador me remp´laza los espacio, las tildes y las ñ, y necesito que no haga esa reaccion ya que he visto formularios que envvian por get las variables y estas no se remplazan…
}
Saludos