Вы никогда не должны использовать регулярные выражения, когда то же самое можно сделать с помощью специальных функций.
Вы можете использовать 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;
}