如何在PHP中嵌入YouTube视频?

Sat*_*ati 57 html php youtube video youtube-api

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

Ale*_*art 86

您必须要求用户存储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>
Run Code Online (Sandbox Code Playgroud)

  • 要求用户从url中提取代码是一个坏主意,编写代码以使用正则表达式提取代码非常容易!-1 (20认同)

Sal*_*n A 51

不要将嵌入代码存储在数据库中--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
?>
Run Code Online (Sandbox Code Playgroud)

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

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


小智 16

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

$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>";
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人


KAD*_*KAD 12

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

<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>
Run Code Online (Sandbox Code Playgroud)

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

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

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

@ shawn在这个问题中回答了这个答案的部分内容.


has*_*sen 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>
>>>
Run Code Online (Sandbox Code Playgroud)

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


Ros*_*oss 5

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

?>
Run Code Online (Sandbox Code Playgroud)

`