Как встраивать видео YouTube в PHP?
-
03-07-2019 - |
Вопрос
Кто-нибудь может подсказать мне, как мы можем показать или встроить видео с YouTube, если у нас есть только URL или код для встраивания?
Решение
Вы должны попросить пользователей сохранить 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-парсер) и сохранить его.Затем отобразите его, используя любой механизм, который в настоящее время предлагает YouTube API.
Наивный 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>";
Надеюсь, это кому-нибудь поможет
Тот Самый <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 в этот вопрос.
Используйте регулярное выражение для извлечения & идентификатора видео " после watch?v=
Сохраните идентификатор видео в переменной, давайте назовем эту переменную vid
Получите код для вставки из случайного видео, удалите идентификатор видео из кода для вставки и замените его на v\=([\-\w]+)
, который вы получили.
Я не знаю, как бороться с регулярными выражениями в 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=
захватывает (под) строку символов и тире, которая идет после <=>
Вот некоторый код, который я написал, чтобы автоматически превращать 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);
}
?>
`
Если вы хотите загружать видео программным образом, проверьте API данных YouTube для PHP
В поисках этой же темы я нашел другой метод, использующий Javascript и API-интерфейс YouTube
Непосредственно из: http://code.google.com/apis/ajax / детская площадка / # 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 / детская площадка
Вы можете сделать это просто с 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. Затем попросите пользователей скопировать и вставить код для вставки. При просмотре записей вы увидите потоковое видео.
милый мальчик,
Если я правильно понимаю, пользователь предоставляет URL / код видео с Youtube, а затем это видео отображается на странице.
Для этого просто напишите простую страницу с макетом и т.д..Скопируйте код для встраивания видео с YouTube и вставьте его на свою страницу.Замените код для встраивания каким-нибудь полем, скажем, VideoID.Установите для этого видеоида код, предоставленный вашим пользователем.
Редактировать:смотрите ответ Алека Смарта.
Просто небольшое обновление ответа Алека Смарта: поскольку AS2 устарела, для работы его примера требуется '? version = 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>
Или с помощью 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 решит все мои проблемы с встраиванием видео.