web-dev-qa-db-ja.com

YouTubeビデオをPHPに埋め込む方法は?

URLまたは埋め込みコードがあれば、誰でもshowまたはYouTubeビデオを埋め込む方法を教えてもらえますか?

57

ユーチューブビデオから11文字のコードを保存するようユーザーに依頼する必要があります。

例えば http://www.youtube.com/watch?v=Ahg6qcgoay4

11文字のコードは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>
86
Alec Smart

埋め込みコードをデータベースに保存しないでください。YouTubeは埋め込みコードとURLパラメータを時々変更する場合があります。たとえば、<object>埋め込みコードは廃止され、<iframe> 埋め込みコード。 URL /埋め込みコードからビデオIDを解析し(正規表現、URL解析関数、またはHTMLパーサーを使用)、保存する必要があります。次に、現在YouTube APIで提供されているメカニズムを使用して表示します。

単純なPHP=動画IDを抽出する例は次のとおりです。

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

これらのIDをどうするかを理解するには、これらの記事をご覧になることをお勧めします。

独自のYouTubeビデオプレーヤーを作成するには:

51
Salman A

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

それが誰かを助けることを願っています

16
fanky

<object>および<embed>タグは HTML Youtube Videos に従って非推奨になりました。<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の答えによって参照されます。

12
KAD

正規表現を使用して、_watch?v=_の後に「ビデオ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
hasen

これは、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);
 }

?>

`

5
Ross

プログラムで動画をアップロードする場合は、 [〜#〜] php [〜#〜]YouTube Data API を確認してください。

3
CMS

これは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"/>
2
user2589739

これと同じトピックを検索して、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

2
OscarRyz

Varchar dateのphp入力フォームを作成し、varcharの長さを300とすることができます。次に、ユーザーに埋め込みコードをコピーして貼り付けるように依頼します。レコードを表示すると、ストリーミングされたビデオを見る。

1
haider

luvboy、

私が明確に理解している場合、ユーザーはYoutubeビデオのURL /コードを提供し、そのビデオがページに表示されます。

そのためには、レイアウトなどの簡単なページを書くだけです。YouTubeからビデオ埋め込みコードをコピーして、ページに貼り付けます。埋め込みコードをVideoIDなどのフィールドに置き換えます。このVideoIdをユーザーが提供するコードに設定します。

編集:アレックスマートによる回答を参照してください。

0
Akshay

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 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"/>
0
Ryan Shih