2010-12-05 9 views
0

wordpressはどのようにyoutube/dailymotion/vimeoビデオをURLだけで埋め込むことができますか?たとえば、[youtube = http://www.youtube.com/watch?v = cXXm696UbKY]と入力すると、そこに動画が埋め込まれたように見えます。 マークダウンを使用してPHPでこれを安全に行うには、とにかくありますか?ビデオをコメント/テキストに埋め込むことを許可する

答えて

2

ほとんどの(すべて?)このビデオプラットフォームはoEmbedサポートを提供します。

たとえば、YouTubeビデオhttp://www.youtube.com/watch?v=cXXm696UbKYの場合は、http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch%3Fv%cXXm696UbKYです。

これは、json_decodeで簡単に解析できるレスポンスを返します。

{ 
    "provider_url": "http:\/\/www.youtube.com\/", 
    "title": "Auto-Tune the News #8: dragons. geese. Michael Vick. (ft. T-Pain)", 
    "html": "<object width=\"425\" height=\"344\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/bDOYN-6gdRE?fs=1\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/bDOYN-6gdRE?fs=1\" type=\"application\/x-shockwave-flash\" width=\"425\" height=\"344\" allowscriptaccess=\"always\" allowfullscreen=\"true\"><\/embed><\/object>", 
    "author_name": "schmoyoho", 
    "height": 344, 
    "thumbnail_width": 480, 
    "width": 425, 
    "version": "1.0", 
    "author_url": "http:\/\/www.youtube.com\/user\/schmoyoho", 
    "provider_name": "YouTube", 
    "thumbnail_url": "http:\/\/i3.ytimg.com\/vi\/bDOYN-6gdRE\/hqdefault.jpg", 
    "type": "video", 
    "thumbnail_height": 360 
} 

興味深い部分はhtmlプロパティです。

私たちがしなければならないことは、テキストを検索して[YouTube=...]タグを検索し、YouTube URLを抽出し、oEmbedで埋め込みコードを取得するだけです。ここで

作業例:

<?php 
function getYouTubeCode($url) 
{ 
    $oembedUrl = 'http://www.youtube.com/oembed?url=' . urlencode($url); 

    // The @-operator suppresses errors if the YouTube oEmbed service can't handle our request 
    $data = @file_get_contents($oembedUrl); 

    // If $data contains invalid JSON code, it will return null 
    $data = json_decode($data); 

    // So if $data is not an object now, we abort 
    if (!is_object($data)) { 
     return ''; 
    } 

    // Otherwise we return the YouTube embed code 
    return $data->html; 
} 

$text = '<h1>Hi There</h1><p>You gotta watch this video:</p><p>[YouTube=http://www.youtube.com/watch?v=cXXm696UbKY]</p>'; 

$matches = array(); 

// We scan the $text variable for all occurrences of "[YouTube=<Any character except right squared bracket>]" 
if (preg_match_all('/\[YouTube=([^\]]+)\]/i', $text, $matches, PREG_SET_ORDER)) { 
    foreach ($matches as $match) { 
     // Eg. $match[0] is "[YouTube=http://www.youtube.com/watch?v=cXXm696UbKY]" 
     // and $match[1] is "http://www.youtube.com/watch?v=cXXm696UbKY" 
     $text = str_replace($match[0], getYouTubeCode($match[1]), $text); 
    } 
} 

echo $text; 
+0

それが答えと恋に落ちるのは間違いですか? – jonnnnnnnnnie

+1

あなたは+1していません。 – erjiang

+0

私の悪い、私は忘れてしまった:)完了 – jonnnnnnnnnie

1

私はwordpressの問題を本当に知りませんが、基本的なロジックはURLを検索してYoutube埋め込みコードに変えて、周りのものを追加することです!私はpreg_replace()があなたが念頭に置いておかなければならないものだと思います!

関連する問題