将youtube video id变成PHP [英] getting youtube video id the PHP

查看:137
本文介绍了将youtube video id变成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:

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

while the other may look like this:

http://www.youtube.com/watch/v/y40ND8kXDlg

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆