Get Youtube Video Id from Youtube Video URL in PHP, PHP Regex to get youtube video ID, Extract the YouTube Video ID from a URL Using PHP
Hi friends Today, I will tell you through this tutorial that you can get the id of video from youtube video url via php script code. I will tell you to get the id of youtube video in 4 ways. So let’s try to understand this by example.
Get the video ID from a YouTube URL using PHP, you can use a combination of string manipulation functions or regular expressions. YouTube video IDs are typically found in the `v` parameter of the URL. Here’s how you can extract it:
Example YouTube URLs:
1. `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
2. `https://youtu.be/dQw4w9WgXcQ`
3. `https://www.youtube.com/embed/dQw4w9WgXcQ`
The video ID in these examples is `dQw4w9WgXcQ`.
Method 1: Using `parse_url()` and `parse_str()`
This method works for standard YouTube URLs (e.g., `https://www.youtube.com/watch?v=VIDEO_ID`).
<?php function getYouTubeVideoId($url) { // Parse the URL to get the query string $queryString = parse_url($url, PHP_URL_QUERY); // Parse the query string into an associative array parse_str($queryString, $params); // Return the 'v' parameter (video ID) return $params['v'] ?? null; } // Example usage $url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"; $videoId = getYouTubeVideoId($url); echo "Video ID: " . $videoId; // Output: Video ID: dQw4w9WgXcQ ?>
Method 2: Using Regular Expressions
This method works for all types of YouTube URLs, including short URLs (`youtu.be`) and embedded URLs.
<?php function getYouTubeVideoId($url) { // Regular expression to match YouTube video IDs $pattern = '/(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/'; // Perform the match if (preg_match($pattern, $url, $matches)) { return $matches[1]; // The video ID is in the first capturing group } return null; // Return null if no match is found } // Example usage $url = "https://youtu.be/dQw4w9WgXcQ"; $videoId = getYouTubeVideoId($url); echo "Video ID: " . $videoId; // Output: Video ID: dQw4w9WgXcQ ?>
Explanation of the Regular Expression:
-> `(?:…)`: Non-capturing group.
-> `youtube\.com\/`: Matches `youtube.com/`.
-> `(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)`: Matches various YouTube URL formats:
-> `[^\/\n\s]+\/\S+\/`: Matches paths like `user/…` or `channel/…`.
-> `(?:v|e(?:mbed)?)\/`: Matches `/v/` or `/embed/`.
-> `\S*?[?&]v=`: Matches the `v=` parameter in the query string.
-> `youtu\.be\/`: Matches short URLs like `youtu.be/VIDEO_ID`.
-> `([a-zA-Z0-9_-]{11})`: Captures the 11-character video ID.
Method 3: Handling Edge Cases
If you want to handle edge cases (e.g., URLs with additional parameters or fragments), you can refine the regular expression or add additional checks.
<?php function getYouTubeVideoId($url) { $pattern = '/(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/'; if (preg_match($pattern, $url, $matches)) { return $matches[1]; } return null; } // Example usage $urls = [ "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "https://youtu.be/dQw4w9WgXcQ", "https://www.youtube.com/embed/dQw4w9WgXcQ", "https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtu.be" ]; foreach ($urls as $url) { $videoId = getYouTubeVideoId($url); echo "URL: $url\nVideo ID: $videoId\n\n"; } ?>
Output:
URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ Video ID: dQw4w9WgXcQ URL: https://youtu.be/dQw4w9WgXcQ Video ID: dQw4w9WgXcQ URL: https://www.youtube.com/embed/dQw4w9WgXcQ Video ID: dQw4w9WgXcQ URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtu.be Video ID: dQw4w9WgXcQ
Method 4:-
<?php $link = "http://www.youtube.com/watch?v=jiXdSJYRHA0"; $video_id = explode("?v=", $link); echo $video_id = $video_id[1]; ?>
Notes:
-> Always validate the input URL to ensure it is a valid YouTube URL.
-> The video ID is always 11 characters long and consists of alphanumeric characters, hyphens (`-`), and underscores (`_`).