58

如果我们只有 URL 或嵌入代码,谁能告诉我如何显示或嵌入 YouTube 视频?

4

13 回答 13

92

您必须要求用户存储 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>
于 2009-01-05T07:30:25.540 回答
53

不要将嵌入代码存储在您的数据库中——YouTube 可能会不时更改嵌入代码和 URL 参数。例如,<object>嵌入代码已被淘汰,取而代之的是<iframe>嵌入代码。您应该从 URL/嵌入代码中解析出视频 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 视频播放器:

于 2009-04-09T11:03:07.060 回答
17

从长短的 youtube 网址中,您可以通过以下方式获得嵌入:

$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>";

希望它可以帮助某人

于 2011-09-29T22:36:16.777 回答
13

根据HTML Youtube Videos不推荐使用<object>and标签,最好使用标签来这样做。<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 在这个问题的回答中提到了这个答案的一部分

于 2015-12-20T14:14:44.000 回答
7

之后使用正则表达式提取“视频ID”watch?v=

将视频 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=

于 2009-01-08T07:25:22.460 回答
5

这是我编写的一些代码,用于自动将 URL 转换为链接并自动嵌入来自 youtube 的任何视频 URL。我为我正在开发的聊天室制作了它,效果很好。我相信它可以很好地用于任何其他目的,例如博客。

您所要做的就是调用函数“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).'<br /><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><br />';


    }else{

    $string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string);

        } 

    } 
} 




               return ($string);
 }

?>

`

于 2011-12-11T02:03:38.780 回答
3

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

于 2009-01-05T07:18:48.980 回答
2

搜索同一主题时,我发现了另一种使用 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

于 2009-08-14T22:22:57.333 回答
2

您可以使用 Joomla 轻松完成此操作。让我假设一个示例 YouTube URL - 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"/>
于 2015-03-10T04:11:56.627 回答
1

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

于 2009-02-05T16:08:18.423 回答
1

只是对 Alec Smart 答案的一个小更新:由于现在不推荐使用 AS2,因此需要“?version = 3”才能使他的示例正常工作。有关详细信息,请参阅“选择要播放的内容”下的YouTube 嵌入式播放器和播放器参数中的 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"/>
于 2012-09-02T22:05:14.923 回答
0

亲爱的男孩,

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

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

编辑:查看 Alec Smart 的回答。

于 2009-01-05T07:29:49.753 回答
-1

这个YouTube 嵌入生成器解决了我所有的视频嵌入问题。

于 2014-01-28T16:37:59.100 回答