Получить идентификатор видео YouTube с помощью встроенного кода iframe

Я хочу получить идентификатор видео YouTube из кода встраивания YouTube, используя preg_match или regex. Для примера

<iframe width="560" height="315" src="//www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe> 

Я хочу взять ID 0gugBiEkLwU

Может ли кто-нибудь сказать мне, как это сделать. На самом деле вам нужна ваша помощь.

Использование этого шаблона с группой захвата должно дать вам нужную строку:

 d\/(\w+)\?rel=\d+" 

Пример: https://regex101.com/r/kH5kA7/1

Вы можете использовать :

 src="\/\/(?:https?:\/\/)?.*\/(.*?)\?rel=\d*" 

Проверить демо здесь

Объяснение:

введите описание изображения здесь

Я знаю, что это довольно поздно, но я придумал что-то для людей, которые все еще могут выглядеть. Поскольку не все атрибуты Youtube iframe src заканчиваются на «? Rel =» и иногда могут заканчиваться другой строкой запроса или заканчиваться двойной цитатой, вы можете использовать:

 /embed\/([\w+\-+]+)[\"\?]/ 

Это фиксирует что-либо после слова «/ embed /» и перед строкой «двойная кавычка / запрос». Выбор может включать любую букву, номер, подчеркивание и дефис.

Вот демонстрационный пример с несколькими примерами: https://regex101.com/r/eW7rC1/1

Следующая функция будет извлекать идентификатор видео youtube из всех форматов URL-адресов YouTube,

 function getYoutubeVideoId($iframeCode) { // Extract video url from embed code return preg_replace_callback('/<iframe\s+.*?\s+src=(".*?").*?<\/iframe>/', function ($matches) { // Remove quotes $youtubeUrl = $matches[1]; $youtubeUrl = trim($youtubeUrl, '"'); $youtubeUrl = trim($youtubeUrl, "'"); // Extract id preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $youtubeUrl, $videoId); return $youtubeVideoId = isset($videoId[1]) ? $videoId[1] : ""; }, $iframeCode); } $iframeCode = '<iframe width="560" height="315" src="http://www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe>'; // Returns youtube video id echo getYoutubeVideoId($iframeCode);