Как встроить видео YouTube в PHP?
может кто - нибудь дать мне представление, как мы можем показать или встроить видео YouTube, если у нас есть только URL или код вставки?
13 ответов:
вы должны попросить пользователей сохранить 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>
код вставки был удален в пользу<iframe>
код для вставки. Вы должны проанализировать идентификатор видео из кода URL / embed (используя регулярные выражения, функции синтаксического анализа 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:
из длинных и коротких 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>";
надеюсь, что это поможет кому-то
The
<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]
, эти будет соответствовать:
- youtube.com/v/vidid
- youtube.com/vi/vidid
- youtube.com/?v=vidid
- youtube.com/?vi=vidid
- youtube.com/watch?v=vidid
- youtube.com/watch?vi=vidid
- youtu.be/vidid
- youtube.com/embed/vidid
- http://youtube.com/v/vidid
- http://www.youtube.com/v/vidid
- https://www.youtube.com/v/vidid
- youtube.com/watch?v=vidid&wtv=wtv
- http://www.youtube.com/watch?dev=inprogress&v=vidid&feature=related
- https://m.youtube.com/watch?v=vidid
часть этого ответа ссылается на ответ @shawn в этот вопрос.
используйте регулярное выражение для извлечения "video id" после
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]+)
захватывает a (sub)строка символов и тире, которая идет послеv=
вот код, который я написал, чтобы автоматически превратить URL-адреса в ссылки и автоматически вставлять любые 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); } ?>
'
Если вы хотите загружать видео программно, проверьте YouTube Data API на PHP
В поисках этой же темы я нашел другой метод, используя 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
вы можете сделать это просто с 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. Затем попросите пользователей скопировать и вставить код вставки.При просмотре записей вы будете просматривать потоковое видео.
luvboy,
Если я понимаю ясно, пользователь предоставляет URL / код видео Youtube, а затем это видео отображается на странице.
для этого просто напишите простую страницу с макетом и т. д.. Скопируйте код для вставки видео с youtube и вставьте его на свою страницу. Заменить код для вставки в некоторых местах, говорят об этом. Установить этот идентификатор в код, предоставляемый пользователю.
изменить: см. ответ Алека смарт.
просто небольшое обновление для ответа Алека Смарта: поскольку 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 выше делает это следующим образом (внутренний embed предположительно используется в качестве запасного варианта для браузеров, которые еще не поддерживают объект tag):
<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 embed generator решить все мои проблемы с встраиванием видео.