12
I have this string "https://www.youtube.com/watch?v=jNQXAC9IVRw" and I want to take only the ID, ie from "? v="
How can I do this in PHP?
12
I have this string "https://www.youtube.com/watch?v=jNQXAC9IVRw" and I want to take only the ID, ie from "? v="
How can I do this in PHP?
18
Can use parse_url to extract fragments from a url and match parse_str that converts a valid querystring into an associative array ($param).
<?php
$url = 'https://www.youtube.com/watch?v=Y3eZEtwQVI8&list=UUdm1fwk5iqteE0MVOBUuE8Q%22';
$itens = parse_url ($url);
parse_str($itens['query'], $params);
echo '<pre>';
print_r($params);
Exit:
Array
(
[v] => Y3eZEtwQVI8
[list] => UUdm1fwk5iqteE0MVOBUuE8Q"
)
5
You can use the explode
$video = "https://www.youtube.com/watch?v=jNQXAC9IVRw";
$id = explode("?v=", $video);
Other examples here
Thanks for the answer! But what if, by chance, the string were: "https://www.youtube.com/watch?v=Y3eZEtwQVI8&list=Udm1fwk5iqteE0MVOBUuE8Q" and I still wanted to take only the video ID? ; which would end in '&'?
3
Can use regex to extract the ID:
$patternRegex = "/http[s]?:\\/\\/www\\.youtube\\.com\\/watch\\?v=(\\w+)/";
$urlYoutube = "https://www.youtube.com/watch?v=jNQXAC9IVRw";
preg_match($patternRegex, $urlYoutube, $matches);
Behold here working with your example.
Explaining the $patternRegex:
/http[s]?:\\/\\/www\\.youtube\\.com\\/watch\\?v= : This part looks for the beginning of the URL.[s]? - Indicates that the character s can occur one or zero times.(\\w+)/ : This part captures all alphanumeric characters and underscores which exist after ?= v until the end of the URL.A question: Every youtube url will have the https? If by any chance it comes with http, your regex no longer works.
You can change regex to support urls without SSL. See the edited response.
3
You can use as soon as any format of the url will work
function YoutubeID($url)
{
if(strlen($url) > 11)
{
if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match))
{
return $match[1];
}
else
return false;
}
return $url;
}
although the answer is not well detailed it works, congratulations.
Browser other questions tagged php
You are not signed in. Login or sign up in order to post.
That I liked, for now is the only one that works regardless of how many parameters were provided, and the order of them. Just pick up the
$params['v']that the result will always be consistent.– Bacco
Alternatively you can enter PHP_URL_QUERY as the second argument of parse_url() to have only querystring.
– Bruno Augusto