Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中嵌入YouTube视频?_Php_Html_Video_Youtube_Youtube Api - Fatal编程技术网

如何在PHP中嵌入YouTube视频?

如何在PHP中嵌入YouTube视频?,php,html,video,youtube,youtube-api,Php,Html,Video,Youtube,Youtube Api,如果我们只有URL或嵌入代码,有谁能告诉我如何显示或嵌入YouTube视频吗?如果您想通过编程方式上载视频,请查看 如果我理解清楚,用户提供Youtube视频的URL/代码,然后该视频显示在页面上 为此,只需写一个简单的页面,包括布局等。。从youtube复制视频嵌入代码并将其粘贴到页面中。用一些字段替换嵌入代码,比如VideoID。将此VideoId设置为用户提供的代码 编辑:请参阅Alec Smart的答案。您必须要求用户存储youtube视频中的11个字符的代码 例如 十一个字符的代码是:

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

如果您想通过编程方式上载视频,请查看

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

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


编辑:请参阅Alec Smart的答案。

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

例如

十一个字符的代码是:Ahg6qcgoay4

然后将此代码放入数据库中。然后,将youtube视频放在页面中的任何位置,从数据库中加载角色,并输入以下代码:-

e、 g.对于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>

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>
>>>
>>ytlink='1!'http://www.youtube.com/watch?v=7-dXUEbBz70'
>>>进口稀土
>>>vid=re.findall(r'v\=([\-\w]+)',ytlink)[0]
>>>视频
“7-dXUEbBz70”
>>>打印百分比(视频,视频)
>>>

正则表达式
v\=([\-\w]+)
捕获
v=

之后的(子)字符串和破折号。您只需为
Varchar date
创建一个php输入表单,将其长度设置为300。然后要求用户复制并粘贴嵌入代码。当您查看记录时,您将查看流式视频。

不要将嵌入代码存储在数据库中——YouTube可能会不时更改嵌入代码和URL参数。例如,
嵌入代码已经退出,取而代之的是
嵌入代码。您应该从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视频播放器,请执行以下操作:


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

直接来自:

加载API

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

完整的示例在前面提到的页面中

从youtube的长URL和短URL可以通过以下方式获得嵌入:

$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>";
$ytarray=explode(“/”,$videolink);
$ytendstring=end($ytarray);
$Ytendaray=explode(“?v=”,$ytendstring);
$ytendstring=结束($Ytendaray);
$Ytendaray=分解(&,$ytendstring);
$ytcode=$Ytendaray[0];
回声“;

希望它能帮助别人

以下是我编写的一些代码,可以自动将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);
 }

?>
`
回显“”。自动链接($string)。“”;
/****************功能包括****************/

`

只是对Alec Smart答案的一个小更新:由于AS2现在已被弃用,因此需要使用“?version=3”才能让他的示例正常工作。有关详细信息,请参阅“选择要播放的内容”下的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标记的浏览器的后备):


或使用iFrame(替换为站点的域):


这解决了我在视频嵌入方面的所有问题。

你可以用Joomla做这个简单的事情。让我假设一个YouTube URL示例-


根据,不推荐使用
标记,最好使用
标记

<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>
要获取视频id,您可以获取它
$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
  • youtube.com/watch?v=vidid&wtv=wtv

这个答案的一部分是由@shawn在中的答案引用的。

是的,这就是我要找的……thanx为帮助提供的不是上传,而是嵌入。它也不是嵌入到PHP中……这非常简单……thanx要求用户从url提取代码是个坏主意,使用正则表达式编写代码来提取代码非常容易-1谢谢你这是一个非常有用的解决方案一些Youtube视频没有包含?v=你能解释一下
[\\?\\&]
的作用吗?我发现这一点确实令人困惑好吧,因为这是一个单引号字符串,
\\?
\?
相同(
`仅转义
`或
'
&
是查询字符串分隔符(
v=
www.youtube.com/watch?v=ABCDEFGH&feature=feedrec\u grec\u index
www.youtube.com/watch?feature=feedrec\u grec\u index&v=ABCDEFGH
)。逃逸
实际上是一种过度杀伤力。
[?&]
<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 id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=1&origin=http://example.com" frameborder="0"/>
<?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"/>
<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>
preg_match("/^(?:http(?:s)?:\/\/)?
    (?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|
    (?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);