首页 文章

如何在PHP中嵌入YouTube视频?

提问于
浏览
57

任何人都可以告诉我如果我们只有URL或嵌入代码,我们如何展示或嵌入YouTube视频?

13 回答

  • 10

    您必须要求用户存储YouTube视频中的11个字符代码 .

    对于例如http://www.youtube.com/watch?v=Ahg6qcgoay4

    十一个字符代码是:Ahg6qcgoay4

    然后,您将此代码放在数据库中 . 然后,无论您想将youtube视频放在页面中的哪个位置,都要从数据库中加载角色并输入以下代码: -

    例如对于Ahg6qcgoay4,它将是:

    <object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4" /></object>
    
  • 5

    不要将嵌入代码存储在数据库中--YouTube可能会不时更改嵌入代码和URL参数 . 例如, <object> 嵌入代码已经退役,而使用的是 <iframe> 嵌入代码 . 您应该从URL / embed代码中解析出视频ID(使用正则表达式,URL解析函数或HTML解析器)并存储它 . 然后使用YouTube API当前提供的任何机制显示它 .

    用于提取视频ID的简单PHP示例如下:

    <?php
        preg_match(
            '/[\\?\\&]v=([^\\?\\&]+)/',
            'http://www.youtube.com/watch?v=OzHvVoUGTOM&feature=channel',
            $matches
        );
        // $matches[1] should contain the youtube id
    ?>
    

    我建议您查看这些文章以了解如何处理这些ID:

    要创建自己的YouTube视频播放器:

  • 2

    从长短管理网址中你可以通过这种方式获得嵌入:

    $ytarray=explode("/", $videolink);
    $ytendstring=end($ytarray);
    $ytendarray=explode("?v=", $ytendstring);
    $ytendstring=end($ytendarray);
    $ytendarray=explode("&", $ytendstring);
    $ytcode=$ytendarray[0];
    echo "<iframe width=\"420\" height=\"315\" src=\"http://www.youtube.com/embed/$ytcode\" frameborder=\"0\" allowfullscreen></iframe>";
    

    希望它可以帮助某人

  • -1

    根据HTML Youtube Videos不推荐使用 <object><embed> 标记,最好使用 <iframe> 标记来执行此操作 .

    <iframe width="420" height="315"
    src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
    </iframe>
    

    为了让您的用户不要一辈子都在尝试在链接中找到视频ID以将其放入您的表单字段中,让他们发布他们在youtube上找到的视频的链接,您可以使用以下正则表达式来获取视频ID :

    preg_match("/^(?:http(?:s)?:\/\/)?
        (?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|
        (?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
    

    要获取视频ID,您可以获取它 $matches[1] ,这些将匹配:

    这个答案的一部分由@ shawn在this question中的回答引用 .

  • 2

    watch?v= 之后使用正则表达式提取"video id"

    将视频ID存储在变量中,让我们调用此变量 vid

    从随机视频中获取嵌入代码,从嵌入代码中删除视频ID,并将其替换为您获得的 vid .

    我不知道如何在php中处理正则表达式,但它不应该太难

    这是python中的示例代码:

    >>> ytlink = 'http://www.youtube.com/watch?v=7-dXUEbBz70'
    >>> import re
    >>> vid = re.findall( r'v\=([\-\w]+)', ytlink )[0]
    >>> vid
    '7-dXUEbBz70'
    >>> print '''<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/%s&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/%s&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>''' % (vid,vid)
    <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
    >>>
    

    正则表达式 v\=([\-\w]+) 捕获 v= 之后出现的(子)字符串和破折号

  • 7

    以下是我编写的一些代码,用于自动将URL转换为链接并自动嵌入来自youtube的任何视频网址 . 我是为一个我正在研究的聊天室做的,它运作得很好 . 我相信它可以用于任何其他目的,例如博客 .

    您所要做的就是调用函数“autolink()”并将其传递给要解析的字符串 .

    例如,包括下面的函数,然后回显此代码 .

    `
    echo '<div id="chat_message">'.autolink($string).'</div>';
    
    /****************Function to include****************/
    
    <?php
    
    function autolink($string){
        // force http: on www.
        $string = str_ireplace( "www.", "http://www.", $string );
        // eliminate duplicates after force
        $string = str_ireplace( "http://http://www.", "http://www.", $string );
        $string = str_ireplace( "https://http://www.", "https://www.", $string );
    
        // The Regular Expression filter
        $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
        // Check if there is a url in the text
    
    $m = preg_match_all($reg_exUrl, $string, $match); 
    
    if ($m) { 
    $links=$match[0]; 
    for ($j=0;$j<$m;$j++) { 
    
        if(substr($links[$j], 0, 18) == 'http://www.youtube'){
    
        $string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string).'
    <iframe title="YouTube video player" class="youtube-player" type="text/html" width="320" height="185" src="http://www.youtube.com/embed/'.substr($links[$j], -11).'" frameborder="0" allowFullScreen></iframe>
    '; }else{ $string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string); } } } return ($string); } ?>

    `

  • 0

    如果您想以编程方式上传视频,请查看YouTube Data API以查看PHP

  • 86

    在搜索同一个主题时,我发现了另一种使用Javascript和Youtube API的方法

    直接来自:http://code.google.com/apis/ajax/playground/#simple_embed

    加载API

    <script src="http://www.google.com/jsapi" type="text/javascript"></script>
    

    并执行以下javascript代码:

    google.load("swfobject", "2.1");
      function _run() {
    
        var videoID = "ylLzyHk54Z0"
        var params = { allowScriptAccess: "always" };
        var atts = { id: "ytPlayer" };
        // All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
        swfobject.embedSWF("http://www.youtube.com/v/" + videoID + "&enablejsapi=1&playerapiid=player1",
                           "videoDiv", "480", "295", "8", null, null, params, atts);
    
    
      }
      google.setOnLoadCallback(_run);
    

    完整的样本在前面提到的页面中http://code.google.com/apis/ajax/playground

  • 1

    你可以用Joomla做到这一点 . 让我假设一个YouTube网址示例 - https://www.youtube.com/watch?v=ndmXkyohT1M

    <?php 
    $youtubeUrl =  JUri::getInstance('https://www.youtube.com/watch?v=ndmXkyohT1M');
    $videoId = $youtubeUrl->getVar('v'); ?>
    
    <iframe id="ytplayer" type="text/html" width="640" height="390"  src="http://www.youtube.com/embed/<?php echo $videoId; ?>"  frameborder="0"/>
    
  • 3

    你可以简单地为 Varchar date 创建一个php输入表单,给它一个 varchar 长度,让我们说300.然后让用户复制并粘贴嵌入代码 . 当你查看记录时,你将查看流视频 .

  • 0

    luvboy,

    如果我清楚地理解,用户提供Youtube视频的URL /代码,然后该视频显示在页面上 .

    为此,只需编写一个简单的页面,使用布局等 . 从youtube复制视频嵌入代码并将其粘贴到您的页面中 . 用一些字段替换嵌入代码,比如说VideoID . 将此VideoId设置为您的用户提供的代码 .

    编辑:见Alec Smart的回答 .

  • 51

    只需对Alec Smart 's answer: since AS2 is deprecated now, the '?version = 3'进行一次小更新即可让他的示例正常工作 . 请参阅YouTube Embedded Players and Player Parameters的"Selecting content to play"下的Youtube参考细节 .

    换一种说法:

    <object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4?version=3" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4?version=3" /></object>
    

    显然,上面的Youtube引用如下所示(内部嵌入可能用作尚未支持object标签的浏览器的后备):

    <object width="640" height="390">
      <param name="movie"
             value="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"></param>
      <param name="allowScriptAccess" value="always"></param>
      <embed src="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"
             type="application/x-shockwave-flash"
             allowscriptaccess="always"
             width="640" height="390"></embed>
    </object>
    

    或使用iframe(将http://example.com替换为您网站的域名):

    <iframe id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=1&origin=http://example.com" frameborder="0"/>
    
  • 16

    YouTube embed generator解决了我在视频嵌入方面遇到的所有问题 .

相关问题