Как встроить видео YouTube в PHP?


Может ли кто-нибудь подсказать мне, как мы можем показать или встроить видео на YouTube, если у нас есть только URL-адрес или код вставки?

Author: Salman A, 2009-01-05

13 answers

Вы должны попросить пользователей сохранить 11-символьный код из видео YouTube.

Например, для 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>
 84
Author: Alec Smart, 2009-01-05 07:30:25

Не храните код встраивания в своей базе данных - YouTube может время от времени изменять код встраивания и параметры URL-адреса. Например, код встраивания <object> был удален в пользу кода встраивания <iframe>. Вы должны проанализировать идентификатор видео из кода URL/вставки (используя регулярные выражения, функции синтаксического анализа URL или синтаксический анализатор HTML) и сохранить его. Затем отобразите его, используя любой механизм, предлагаемый в настоящее время API YouTube.

Наивный пример PHP для извлечения идентификатора видео выглядит следующим образом следует:

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

Я предлагаю вам ознакомиться с этими статьями, чтобы понять, что делать с этими идентификаторами:

Чтобы создать свой собственный видеоплеер YouTube:

 51
Author: Salman A, 2014-12-13 17:06:02

Как из длинных, так и из коротких URL-адресов YouTube вы можете получить вставку следующим образом:

$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
Author: fanky, 2011-09-29 22:36:16

Теги <object> и <embed> устарели в соответствии с HTML-видео на Youtube , для этого предпочтительнее использовать тег <iframe>.

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

Чтобы ваши пользователи не тратили всю свою жизнь на то, чтобы найти идентификатор видео в ссылках, чтобы поместить его в поле формы, позвольте им опубликовать ссылку на видео, которое они найдут на YouTube, и вы можете использовать следующее регулярное выражение для получения идентификатора видео:

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

Чтобы получить идентификатор видео, вы можете получить его $matches[1], они будут совпадение:

Часть этого ответа упоминается в ответе @shawn в на этот вопрос.

 9
Author: KAD, 2017-05-23 12:02:48

Используйте регулярное выражение для извлечения "идентификатора видео" после watch?v=

Сохраните идентификатор видео в переменной, назовем эту переменную vid

Получите код вставки из случайного видео, удалите идентификатор видео из кода вставки и замените его полученным 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
Author: hasen, 2009-01-08 10:42:19

Вот код, который я написал, чтобы автоматически превращать URL-адреса в ссылки и автоматически вставлять любые URL-адреса видео с YouTube. Я сделал это для чата, над которым работаю, и он работает довольно хорошо. Я уверен, что это будет отлично работать и для любых других целей, например, для блога.

Все, что вам нужно сделать, это вызвать функцию "автолинк()" и передать ей строку для анализа.

Например, включите функцию ниже, а затем повторите этот код.

`
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, 2011-12-11 02:09:00

Если вы хотите загружать видео программно, проверьте API данных YouTube для PHP

 3
Author: CMS, 2009-01-05 07:18:48

В поисках этой же темы я нашел другой метод, использующий Javascript и API Youtube

Непосредственно от: 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
Author: OscarRyz, 2009-08-14 22:28:39

Вы можете сделать это просто с помощью Joomla. Позвольте мне предположить пример 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, 2015-03-10 04:17:35

Вы можете просто создать форму ввода php для Varchar date, присвоив ей длину varchar, скажем, 300. Затем попросите пользователей скопировать и вставить код вставки.Когда вы просматриваете записи, вы будете просматривать потоковое видео.

 1
Author: Mayank Vadiya, 2015-11-23 07:32:48

Любимый,

Если я правильно понимаю, пользователь предоставляет URL/код видео на Youtube, а затем это видео отображается на странице.

Для этого просто напишите простую страницу с макетом и т. Д.. Скопируйте код для вставки видео с YouTube и вставьте его на свою страницу. Замените код вставки каким-нибудь полем, скажем, видеоидом. Установите для этого видеоида код, предоставленный вашим пользователем.

Редактировать: см. Ответ Алека Смарта.

 0
Author: Akshay, 2009-01-05 07:40:24

Просто небольшое обновление к ответу Алека Смарта: поскольку AS2 теперь устарел, для того, чтобы его пример заработал, требуется "?версия=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
Author: Ryan Shih, 2012-09-02 22:50:45

Этот Генератор встраивания YouTube решает все мои проблемы с встраиванием видео.

 -1
Author: Patartics Milán, 2014-01-28 16:37:59