Захватите идентификатор видео только с URL YouTube

StackOverflow https://stackoverflow.com/questions/4045154

  •  27-09-2019
  •  | 
  •  

Вопрос

Как я могу схватить идентификатор видео только с URL YouTube?

Например,

http://www.youtube.com/watch?v=apm3qvklbjg

Иногда URL-адреса содержит другую информацию после того, как «V», как

http://www.youtube.com/watch?v=z29mkjdmkqs&feature=grec_index.

Но я не хочу другую информацию, просто идентификатор видео.

Я могу только думать об использовании взрыва,

$url  = "http://www.youtube.com/watch?v=aPm3QVKlBJg";
$pieces = explode("v=", $url);

Но как это убрать URL-адреса?

http://www.youtube.com/watch?v=z29mkjdmkqs&feature=grec_index.

Это было полезно?

Решение

Вы никогда не должны использовать регулярные выражения, когда то же самое можно выполнить с помощью специально построенных функций.

Вы можете использовать parse_url сломать URL в его сегменты, а также parse_str Чтобы сломать строку запроса в массив клавиши / значения:

$url = 'http://www.youtube.com/watch?v=Z29MkJdMKqs&feature=grec_index'

// break the URL into its components
$parts = parse_url($url);

// $parts['query'] contains the query string: 'v=Z29MkJdMKqs&feature=grec_index'

// parse variables into key=>value array
$query = array();
parse_str($parts['query'], $query);

echo $query['v']; // Z29MkJdMKqs
echo $query['feature'] // grec_index

Альтернативная форма parse_str Извлекивает переменные в текущий объем. Вы можете построить это в функцию, чтобы найти и вернуть v Параметр:

// Returns null if video id doesn't exist in URL
function get_video_id($url) {
  $parts = parse_url($url);

  // Make sure $url had a query string
  if (!array_key_exists('query', $parts))
    return null;

  parse_str($parts['query']);

  // Return the 'v' parameter if it existed
  return isset($v) ? $v : null;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top