将youtube video id变成PHP [英] getting youtube video id the PHP
问题描述
我目前正在编写一个web应用程序,其中一些页面非常依赖能够将正确的YouTube视频插入并播放。 youtube URLs由用户提供,因此通常会带有变体,其中一个可能如下所示:
http://www.youtube.com/watch?v=y40ND8kXDlg
而另一个可能如下所示:
http://www.youtube.com/watch/v/y40ND8kXDlg
目前我可以使用下面的代码从后者中提取ID:
<$ p $
function get_youtube_video_id($ video_id)
{
//我们是否有网址?
if(FALSE!== filter_var($ video_id,FILTER_VALIDATE_URL))
{
// http://www.youtube.com/v/abcxyz123
if(FALSE!== strpos($ video_id,'/ v /'))
{
list(,$ video_id)= explode('/ v /',$ video_id);
}
// http://www.youtube.com/watch?v=abcxyz123
else
{
$ video_query = parse_url($ video_id,PHP_URL_QUERY);
parse_str($ video_query,$ video_params);
$ video_id = $ video_params ['v'];
}
}
return $ video_id;
$ b $ p
$ b 如何处理使用?v
版本而不是 / v /
版本
解决方案像这样:
$ link =http://www.youtube.com/观看v = oHg5SJYRHA0\" ?;
$ video_id = explode(?v =,$ link);
$ video_id = $ video_id [1];
以下是通用解决方案:
$ link =http://www.youtube.com/watch?v=oHg5SJYRHA0&lololo;
$ video_id = explode(?v =,$ link); //对于视频如http://www.youtube.com/watch?v = ...
if(empty($ video_id [1]))
$ video_id = explode(/ v / ,$ link); //像http://www.youtube.com/watch/v/ ..
$ video_id = explode(&,$ video_id [1]); //删除其他任何参数
$ video_id = $ video_id [0];
或者只是使用这个正则表达式:
(\?v = | / v /)([ - a-zA-Z0-9] +)
I am currently writing a webapp in which some pages are heavily reliant on being able to pull the correct youtube video in - and play it. The youtube URLS are supplied by the users and for this reason will generally come in with variants one of them may look like this:
while the other may look like this:
Currently I am able to pull the ID from the latter using the code below:
function get_youtube_video_id($video_id)
{
// Did we get a URL?
if ( FALSE !== filter_var( $video_id, FILTER_VALIDATE_URL ) )
{
// http://www.youtube.com/v/abcxyz123
if ( FALSE !== strpos( $video_id, '/v/' ) )
{
list( , $video_id ) = explode( '/v/', $video_id );
}
// http://www.youtube.com/watch?v=abcxyz123
else
{
$video_query = parse_url( $video_id, PHP_URL_QUERY );
parse_str( $video_query, $video_params );
$video_id = $video_params['v'];
}
}
return $video_id;
}
How can I deal with URLS that use the ?v
version rather than the /v/
version?
解决方案 Like this:
$link = "http://www.youtube.com/watch?v=oHg5SJYRHA0";
$video_id = explode("?v=", $link);
$video_id = $video_id[1];
Here is universal solution:
$link = "http://www.youtube.com/watch?v=oHg5SJYRHA0&lololo";
$video_id = explode("?v=", $link); // For videos like http://www.youtube.com/watch?v=...
if (empty($video_id[1]))
$video_id = explode("/v/", $link); // For videos like http://www.youtube.com/watch/v/..
$video_id = explode("&", $video_id[1]); // Deleting any other params
$video_id = $video_id[0];
Or just use this regex:
(\?v=|/v/)([-a-zA-Z0-9]+)
这篇关于将youtube video id变成PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!