Dưới đây là function giúp chúng ta lấy được youtube video id từ URL cho trước.
Function lấy Youtube Video ID
function getYouTubeVideoId($url)
{
// Xử lý URL không hợp lệ
$parsed = parse_url($url);
if ($parsed === false || !isset($parsed['host'])) {
return false;
}
$host = strtolower($parsed['host']);
// Loại bỏ 'www.' và các subdomain
$host = preg_replace('/^(www\.|m\.|music\.)?/', '', $host);
$video_id = null;
// Xử lý youtu.be
if ($host === 'youtu.be') {
if (isset($parsed['path'])) {
$video_id = trim($parsed['path'], '/');
}
}
// Xử lý youtube.com
elseif ($host === 'youtube.com') {
// Kiểm tra query string trước (v=xxx)
if (isset($parsed['query'])) {
parse_str($parsed['query'], $query);
if (isset($query['v']) && !empty($query['v'])) {
$video_id = $query['v'];
}
}
// Nếu chưa có, kiểm tra path (/embed/xxx, /v/xxx, /shorts/xxx)
if ($video_id === null && isset($parsed['path'])) {
$path = trim($parsed['path'], '/');
$segments = explode('/', $path);
if (count($segments) >= 2 && in_array($segments[0], ['embed', 'v', 'shorts', 'e', 'live'])) {
$video_id = $segments[1];
}
}
} else {
return false;
}
// Làm sạch video ID (loại bỏ timestamp và ký tự không hợp lệ)
if ($video_id !== null) {
// Loại bỏ phần sau dấu ? hoặc & (timestamp)
$video_id = preg_replace('/[?&].*$/', '', $video_id);
// Video ID YouTube chỉ chứa: chữ cái, số, dấu gạch ngang và gạch dưới, độ dài 11 ký tự
if (preg_match('/^[a-zA-Z0-9_-]{11}$/', $video_id)) {
return $video_id;
}
}
return false;
}
Chạy thử
Code sau để test hàm lấy ID của video youtube phía trên.
$urls = array(
'http://youtu.be/dQw4w9WgXcQ',
'http://www.youtube.com/?v=dQw4w9WgXcQ',
'http://www.youtube.com/?v=dQw4w9WgXcQ&feature=player_embedded',
'http://www.youtube.com/watch?v=dQw4w9WgXcQ',
'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=player_embedded',
'http://www.youtube.com/v/dQw4w9WgXcQ',
'http://www.youtube.com/e/dQw4w9WgXcQ',
'http://www.youtube.com/embed/dQw4w9WgXcQ',
'http://www.youtube.com/watch?t=40s&v=dQw4w9WgXcQ',
'https://levantoan.com',
'https://www.youtube.com/watch?v=u8nQa1cJyX8&list=RDu8nQa1cJyX8#t=45'
);
foreach ($urls as $url)
{
echo sprintf('%s -> %s <br>' . PHP_EOL, $url, getYouTubeVideoId($url));
}
Kết quả
Sau khi có hàm get youtube video id và code để test chúng ta sẽ có kết quả như bên dưới.
Để duy trì blog nên mình có làm aff cho 1 số bên hosting. Nhưng dù aff mình cũng chọn 1 số nhà cung cấp uy tín về chất lượng và support nên các bạn cứ yên tâm nhé.
Nếu có mua hosting mà có trong list dưới đây các bạn click vào link trước khi mua để ủng hộ mình nhé. Mình cảm ơn nhiều
- Azdigi: Giá rẻ thì dùng gói Pro Gold Hosting còn chất lượng hơn thì em khuyên dùng Business Hosting. Có điều kiện thì lên VPS nhé
- Tino hosting
- iNet
- Nước ngoài thì Vultr
http://youtu.be/dQw4w9WgXcQ -> dQw4w9WgXcQ http://www.youtube.com/?v=dQw4w9WgXcQ -> dQw4w9WgXcQ http://www.youtube.com/?v=dQw4w9WgXcQ&feature=player_embedded -> dQw4w9WgXcQ http://www.youtube.com/watch?v=dQw4w9WgXcQ -> dQw4w9WgXcQ http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=player_embedded -> dQw4w9WgXcQ http://www.youtube.com/v/dQw4w9WgXcQ -> dQw4w9WgXcQ http://www.youtube.com/e/dQw4w9WgXcQ -> dQw4w9WgXcQ http://www.youtube.com/embed/dQw4w9WgXcQ -> dQw4w9WgXcQ http://www.youtube.com/watch?t=40s&v=dQw4w9WgXcQ -> dQw4w9WgXcQ https://levantoan.com -> https://www.youtube.com/watch?v=u8nQa1cJyX8&list=RDu8nQa1cJyX8#t=45 -> u8nQa1cJyX8
Chúc các bạn thành công!
- Bình luận




