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

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

Это не загрузка, это встраивание.

Pim Jager 05.01.2009 10:34

он также не встраивает его в PHP ...

nlucaroni 15.08.2009 02:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
57
2
204 369
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

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

Да, это то, что я ищу ... спасибо за помощь

Satish Ravipati 05.01.2009 10:27

luvboy,

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

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

изменить: см. ответ Алека Смарта.

Ответ принят как подходящий

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

Например, https://thewikihow.com/video_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>

Это очень просто ... спасибо, чувак

Satish Ravipati 05.01.2009 10:57

просить пользователя извлечь код из URL-адреса - плохая идея, очень легко написать код для его извлечения с помощью регулярного выражения! -1

hasen 08.01.2009 11:51

Спасибо, это такое полезное решение

Teerasej 10.09.2009 10:12

Некоторые видео Youtube не содержат? V =

Waqar Alamgir 13.01.2013 01:31

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

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

Получите код внедрения из случайного видео, удалите идентификатор видео из кода внедрения и замените его на vid, который вы получили.

Я не знаю, как работать с регулярным выражением в php, но это не должно быть слишком сложно

Вот пример кода на Python:

>>> ytlink = 'https://thewikihow.com/video_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=.

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

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

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

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

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

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

Вы можете объяснить, что делает [\\?\\&]? Я нахожу это немного запутанным

Casebash 06.10.2011 03:38

Хорошо, поскольку это строка в одинарных кавычках, \\? совпадает с \? (` only escapes ` или ')

Casebash 06.10.2011 03:51
? и & являются разделителями строк запроса (v=, как в www.youtube.com/watch?v=ABCDEFGH&feature=feedrec_grec_index и www.youtube.com/watch?feature=feedrec_grec_index&v=ABCDEFGH) ‌. Ускользнуть от ? и & на самом деле сложно. [?&] и [^?&] вполне достаточно.
Salman A 06.10.2011 09:22

Полное решение этой проблемы - это Библиотека MediaEmbed, который извлекает "host slug" и "id", сохраняет их в БД и завершает выходной HTML-код при отображении (либо как iframe - предпочтительно - или как резервный объект).

mark 22.07.2014 03:07

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

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

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

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

?>

`

Просто небольшое обновление для ответа Алека Смарта: поскольку 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>

Или с помощью 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"/>

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

Вы можете сделать это просто с помощью Joomla. Допустим, пример URL-адреса YouTube - https://thewikihow.com/video_ndmXkyohT1M

<?php 
$youtubeUrl =  JUri::getInstance('https://thewikihow.com/video_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"/>

Теги <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 в этот вопрос.

Новые строки / пробелы облажались для меня. Не забудьте удалить их при копировании / вставке.

Zeth 22.08.2019 19:12

Другие вопросы по теме