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

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

Вы должны попросить пользователей сохранить 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> 

Не храните код для встраивания в своей базе данных. Время от времени YouTube может изменять код вставки и URL-параметры. Например, код <object> embed был удален в пользу кода <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, плейлисты и многое другое с помощью вложений IFrame

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

  • Параметры встроенного проигрывателя YouTube
  • Ссылка на API JavaScript YouTube для YouTube

Как с длинными, так и с короткими 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>"; 

Надеюсь, это поможет кому-то

Теги <object> и <embed> устарели как HTML Youtube Videos , поэтому рекомендуется использовать <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 в этом вопросе .

Используйте регулярное выражение для извлечения «видеоизображения» после 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=

Вот код, который я написал, чтобы автоматически превращать 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); } ?> 

`

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

В поисках этой же темы я нашел другой метод, используя Javascript API 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.

Вы можете сделать это с помощью 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"/> 

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

luvboy,

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

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

edit: см. ответ от Alec Smart.

Просто небольшое обновление для ответа Алека Смарта: поскольку AS2 сейчас не рекомендуется, для его работы нужно использовать «? Version = 3». См. Ссылку Youtube на вкладках YouTube Player и Player в разделе «Выбор содержимого для воспроизведения».

Другими словами:

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

Или используя iframes (замените 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"/> 

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