Захватите идентификатор видео только с URL YouTube
Вопрос
Как я могу схватить идентификатор видео только с URL YouTube?
Например,
Иногда 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;
}