如何在YouTube中embeddedYouTubevideo?
任何人都可以给我一个想法,如果我们只有URL或embedded代码,我们如何显示或embeddedYouTubevideo?
您必须要求用户存储来自YouTubevideo的11个字符的代码。
例如http://www.youtube.com/watch?v=Ahg6qcgoay4
十一个字符代码是:Ahg6qcgoay4
然后你把这个代码放在你的数据库中。 然后,无论您想将YouTubevideo放在您的网页中,请从数据库加载该字符,然后input以下代码: –
例如对于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>
不要将embedded代码存储在数据库中 – YouTube可能会不时更改embedded代码和URL参数。 例如, <object>
embedded代码已经停用,以支持<iframe>
embedded代码。 您应该从URL /embedded代码(使用正则expression式,URLparsing函数或HTMLparsing器)parsing出videoID并将其存储。 然后使用YouTube API目前提供的任何机制来显示它。
一个天真的PHP示例提取videoID如下所示:
<?php preg_match( '/[\\?\\&]v=([^\\?\\&]+)/', 'http://www.youtube.com/watch?v=OzHvVoUGTOM&feature=channel', $matches ); // $matches[1] should contain the youtube id ?>
我build议你看看这些文章,弄清楚如何处理这些ID:
- embeddedYouTubevideo,播放列表和更多与IFrameembedded
创build您自己的YouTubevideo播放器:
- YouTubeembedded式播放器参数
- YouTube JavaScript播放器API参考
无论是漫长的YouTube用户,你都可以通过这种方式获得embedded:
$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>";
希望它可以帮助别人
根据HTML Youtubevideo , <object>
和<embed>
标记已被弃用,所以最好使用<iframe>
标记来执行此操作。
<iframe width="420" height="315" src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1"> </iframe>
为了让您的用户不用花整整一生的时间试图在链接中findvideoID并将其放在您的表单字段中,让他们发布在YouTube上find的video的链接,然后您可以使用以下正则expression式获取videoID :
preg_match("/^(?:http(?:s)?:\/\/)? (?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=| (?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
要获得videoID,你可以获取它$matches[1]
,这些将匹配:
- youtube.com/v/vidid
- youtube.com/vi/vidid
- youtube.com/?v=vidid
- youtube.com/?vi=vidid
- youtube.com/watch?v=vidid
- youtube.com/watch?vi=vidid
- youtu.be/vidid
- youtube.com/embed/vidid
- http://youtube.com/v/vidid
- http://www.youtube.com/v/vidid
- https://www.youtube.com/v/vidid
- youtube.com/watch?v=vidid&wtv=wtv
- http://www.youtube.com/watch?dev=inprogress&v=vidid&feature=related
- https://m.youtube.com/watch?v=vidid
这个答案的一部分被@ shawn在这个问题中的回答所引用。
使用正则expression式在watch?v=
之后提取“videoID”
将videoID存储在一个variables中,我们称这个variables为vid
从随机video中获取embedded代码,从embedded代码中删除videoID,并将其replace为您获得的vid
。
我不知道如何在PHP中处理正则expression式,但它不应该太难
以下是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> >>>
正则expression式v\=([\-\w]+)
捕获一个(子)string和破折号,它在v=
以下是我写的一些代码,用于自动将url变为链接,并自动embeddedYouTube的任何videourl。 我做了一个聊天室,我工作,它工作得很好。 我相信它会适用于任何其他目的,就像博客一样。
所有你需要做的就是调用函数“autolink()”,并把它传递给被parsing的string。
例如包含下面的函数,然后回显这个代码。
` 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); } ?>
`
如果您想以编程方式上传video,请检查YouTube数据API for PHP
search这个相同的主题,我发现另一种使用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页面中;
Joomla可以做到这一点。 让我假设一个示例YouTubeurl – 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"/>
您可以简单地为Varchar date
创build一个phpinput表单,并为其指定一个varchar
长度,例如300。然后要求用户复制并粘贴Embed代码。查看logging时,您将查看streamvideo。
luvboy,
如果我理解清楚,用户提供Youtubevideo的URL /代码,然后该video显示在页面上。
为此,只需编写一个简单的页面,使用布局等。复制来自youtube的videoembedded代码并将其粘贴到您的页面中。 用一些字段replaceembedded的代码,比如VideoID。 将此VideoId设置为您的用户提供的代码。
编辑:查看Alec Smart的回答。
对Alec Smart的回答只是一个小小的更新:由于AS2现在已经被弃用,所以需要'?version = 3'来让他的例子工作。 有关详细信息,请参阅“select要播放的内容”下的YouTubeembedded式播放器和播放器参数上的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 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>
或使用内联框架(将http://example.comreplace为您网站的域名):;
<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"/>
这个YouTubeembedded式生成器解决了我所有的videoembedded问题。