Jak osadzać filmy z YouTube w PHP?

Czy ktoś może mi podpowiedzieć, jak możemy pokazać lub osadzić film na YouTube, jeśli mamy TYLKO adres URL lub kod osadzenia?

Author: Salman A, 2009-01-05

13 answers

Musisz poprosić użytkowników o zapisanie kodu 11 znaków z filmu na youtube.

Dla np. http://www.youtube.com/watch?v=Ahg6qcgoay4

Jedenastoznakowy kod to: Ahg6qcgoay4

Następnie bierzesz ten kod i umieszczasz go w swojej bazie danych. Następnie gdziekolwiek chcesz umieścić film z youtube na swojej stronie, załaduj znak z bazy danych i umieść następujący kod: -

Np. dla Ahg6qcgoay4 będzie to:

<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>
 84
Author: Alec Smart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-05 07:30:25

Nie przechowuj kodu osadzania w bazie danych-YouTube może od czasu do czasu zmieniać kod osadzania i parametry URL. Na przykład kod osadzania <object> został wycofany na rzecz kodu osadzania <iframe>. Powinieneś przeanalizować ID wideo z kodu URL / embed (używając wyrażeń regularnych, funkcji parsowania URL lub parsera HTML) i zapisać go. Następnie Wyświetl go przy użyciu dowolnego mechanizmu oferowanego obecnie przez YouTube API.

Naiwny przykład PHP do wyodrębniania ID wideo jest jak "follows": {]}

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

Proponuję przejrzeć te artykuły, aby dowiedzieć się, co zrobić z tymi identyfikatorami:

Aby stworzyć własny odtwarzacz wideo YouTube:

 51
Author: Salman A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-13 17:06:02

Z długich i krótkich adresów URL youtube można uzyskać osadzenie w ten sposób:

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

Hope it helps someone

 16
Author: fanky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-29 22:36:16

Znaczniki <object> i <embed> są przestarzałe zgodnie z HTML wideo na Youtube, w tym celu lepiej jest użyć znacznika <iframe>.

<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>

Aby użytkownicy nie spędzali całego życia na szukaniu identyfikatora wideo w linkach, aby umieścić go w polu formularza, pozwól im opublikować link do filmu, który znajdują na youtube, a możesz użyć następującego wyrażenia regularnego, aby uzyskać identyfikator wideo: {]}

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

Aby uzyskać identyfikator wideo, możesz go pobrać $matches[1], będą to dopasowanie:

Część tej odpowiedzi znajduje się w odpowiedzi @shawn w to pytanie .

 9
Author: KAD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:48

Użyj wyrażenia regularnego, aby wyodrębnić "video id" po watch?v=

Przechowuj identyfikator wideo w zmiennej, nazwijmy tę zmienną vid

Pobierz kod osadzania z losowego filmu, Usuń identyfikator wideo z kodu osadzania i zamień go na vid.

Nie wiem jak radzić sobie z regex w php, ale to nie powinno być zbyt trudne

Oto przykładowy kod w Pythonie:

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

Wyrażenie regularne v\=([\-\w]+) przechwytuje (pod)ciąg znaków i myślników, który pojawia się po v=

 7
Author: hasen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-08 10:42:19

Oto kod, który napisałem, aby automatycznie zamieniać adresy URL w linki i automatycznie osadzać adresy URL filmów z youtube. Zrobiłem go na czat, nad którym pracuję i działa całkiem dobrze. Jestem pewien, że będzie działać dobrze w każdym innym celu, jak na przykład blog.

Wystarczy wywołać funkcję "autolink ()" i przekazać jej ciąg znaków do przetworzenia.

Na przykład Dołącz funkcję poniżej, a następnie echo tego kodu.

`
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
Author: Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-11 02:09:00

Jeśli chcesz programowo przesyłać filmy, sprawdź YouTube Data API dla PHP

 3
Author: CMS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-05 07:18:48

Szukając tego samego tematu znalazłem inną metodę za pomocą Javascript API Youtube

Bezpośrednio z: http://code.google.com/apis/ajax/playground/#simple_embed

Ładowanie API

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

I wykonanie następującego kodu 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);

Pełna próbka znajduje się na wcześniej wskazanej stronie http://code.google.com/apis/ajax/playground

 2
Author: OscarRyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-14 22:28:39

Możesz to zrobić prosto z Joomla. Załóżmy przykładowy URL YouTube- 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
Author: user2589739,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-10 04:17:35

Możesz po prostu utworzyć formularz wejściowy php dla Varchar date, nadając mu varchar Długość powiedzmy 300. Następnie poproś użytkowników o skopiowanie i wklejenie kodu osadzania.Po wyświetleniu rekordów zobaczysz strumieniowane wideo.

 1
Author: Mayank Vadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-23 07:32:48

Luvboy,

Jeśli dobrze rozumiem, użytkownik podaje adres URL / kod filmu z Youtube, a następnie ten film jest wyświetlany na stronie.

W tym celu wystarczy napisać prostą stronę, z layoutem itp.. Skopiuj kod osadzania wideo z youtube i wklej go na swojej stronie. Zastąp kod osadzania jakimś polem, powiedzmy VideoID. Ustaw ten VideoId na kod dostarczony przez użytkownika.

Edit: zobacz odpowiedź Alec Smart.

 0
Author: Akshay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-05 07:40:24

Mała aktualizacja do odpowiedzi Aleca Smarta: ponieważ AS2 jest teraz przestarzały, the '?version = 3 ' jest wymagane, aby jego przykład zadziałał. Aby dowiedzieć się więcej, Zobacz odnośnik Youtube na YouTube Embedded Players i parametry odtwarzacza w sekcji "Selecting content to play".

Innymi słowy:

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

Widocznie powyższy odnośnik do Youtube robi to w następujący sposób (wewnętrzny embed prawdopodobnie używany jako alternatywa dla przeglądarek, które nie obsługują jeszcze znacznika object):

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

Lub using iframes (replace http://example.com z domeną Twojej strony):

<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
Author: Ryan Shih,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-02 22:50:45

Ten YouTube embed generator rozwiąże wszystkie moje problemy z osadzaniem wideo.

 -1
Author: Patartics Milán,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-28 16:37:59