[PHP] Tổng hợp các cách lấy Youtube Video ID

Hiện nay có rất nhiều trang web nhúng các video từ Youtube về để làm tăng sự phong phú cũng như cải thiện chất lượng nội dung các bài viết. Trong nhiều trường hợp, việc diễn giải hoặc dẫn chứng minh họa bằng video sẽ làm cho người dùng dễ hiểu hơn về vấn đề, đồng thời nâng cao sự tương tác giữa website và người dùng.

Với một lập trình viên thì việc nhúng video vào trang web khá dễ dàng vì hầu như các trang web chia sẻ video trực tuyến lớn đều có đoạn mã nhúng vào website. Nhưng vì lí do phát sinh nên đôi lúc các lập trình viên sẽ cần phải lấy thông tin video đó. Ví dụ hiển thị hình minh họa (thumbnail), lưu thông tin video vào database…Để có được những thông tin đó thì điều kiện ban đầu là phải có được ID của video đó.

Trong bài viết hôm nay, tôi sẽ giới thiệu các bạn một số cách để lấy Youtube Video ID.

1, Lấy Video ID từ đường dẫn thông dụng của Youtube

Get Youtube Video ID

Hầu hết các đường dẫn video được chia sẻ từ Youtube sẽ có dạng như sau:

youtube.com/?v={video_id}
youtube.com/watch?v={video_id}

Các bạn chỉ cần dùng câu lệnh đơn giản dưới đây để lấy video_id

Смотрите Appliance repair на нашем сайте. https://vetdubai.com top rated local veterinarians meridian veterinary clinic.

<?php
$url = "https://www.youtube.com/watch?v=te5_bwysiWA";
parse_str(parse_url($url, PHP_URL_QUERY), $youtube);
echo $youtube['v'];
?>

2, Lấy Video ID từ các đường dẫn khác nhau của Youtube

Get Youtube Video ID

Đôi khi các bạn sẽ gặp những đường dẫn khác nhau của Youtube dưới đây

http://youtu.be/dQw4w9WgXcQ …
https://www.youtube.com/embed/dQw4w9WgXcQ …
https://www.youtube.com/watch?v=dQw4w9WgXcQ …
https://www.youtube.com/?v=dQw4w9WgXcQ …
https://www.youtube.com/v/dQw4w9WgXcQ …
https://www.youtube.com/e/dQw4w9WgXcQ …
https://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ …
https://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ …
https://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ …
https://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ …

Lúc đó các bạn có thể tham khảo các Regular Expressions (Biểu thức chính quy) dưới đây để lấy được Video ID mong muốn

<?php
$url = 'http://youtu.be/KVu3gS7iJu4';
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $matches);
if (!empty($matches)) {
echo $matches[1];
}
?>

3, Lấy Youtube Video ID chứa trong iFrame

Get Youtube Video ID

Nếu các bạn dùng một iFrame để nhúng video vào trang web thì đoạn code lấy Video ID như sau

<?php
$url = '<iframe width="560" height="315" src="https://www.youtube.com/embed/l1sETPnwrwsiDo" frameborder="0" allowfullscreen="allowfullscreen"></iframe>';
preg_match('/(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=‌​(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+/', $url, $matches);
if (!empty($matches)) {
echo $matches[0];
}
?>

4, Lấy Youtube Video ID chứa trong thẻ Object (HTML)

Get Youtube Video ID from Object HTML

Để lấy được Youtube Video ID trong thẻ Object thì chúng ta sẽ sử dụng đoạn code sau

<?php
$html = '
<object width="425" height="344">
<param name="movie" value="https://www.youtube.com/v/Ou5eVl5dsadaeqtg&hl=es_ES&fs=1&" />
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" />
<embed src="https://www.youtube.com/v/Ou5eVl5eqtg&hl=es_ES&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="allowfullscreen" width="425" height="344" />
</object>';
preg_match('#<object[^>]+>.+?https://www.youtube.com/v/([A-Za-z0-9\-_]+).+?#s', $html, $matches);
if (!empty($matches)) {
echo $matches[1];
}
?>

5, Mở rộng

Có khi người dùng gõ/nhập một đoạn văn bản nào đó mà có chứa link Youtube. Làm thế nào tìm ra link Youtube và hiển thị link đó dưới dạng hyperlink ? Đoạn code dưới đây là câu trả lời.

<?php
$text = "Lorem Ipsum is simply dummy text. https://www.youtube.com/watch?v=DUQi_R4SgWo of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. https://www.youtube.com/watch?v=A_6gNZCkajU&feature=relmfu It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.";
$text = preg_replace('~
# Match non-linked youtube URL in the wild. (Rev:20130823)
https?:// # Required scheme. Either http or https.
(?:[0-9A-Z-]+\.)? # Optional subdomain.
(?: # Group host alternatives.
youtu\.be/ # Either youtu.be,
| youtube # or youtube.com or
(?:-nocookie)? # youtube-nocookie.com
\.com # followed by
\S* # Allow anything up to VIDEO_ID,
[^\w\s-] # but char before ID is non-ID char.
) # End host alternatives.
([\w-]{11}) # $1: VIDEO_ID is exactly 11 chars.
(?=[^\w-]|$) # Assert next char is non-ID or EOS.
(?! # Assert URL is not pre-linked.
[?=&+%\w.-]* # Allow URL (query) remainder.
(?: # Group pre-linked alternatives.
[\'"][^<>]*> # Either inside a start tag,
| </a> # or inside <a> element text contents.
) # End recognized pre-linked alts.
) # End negative lookahead assertion.
[?=&+%\w.-]* # Consume any URL (query) remainder.
~ix',
'<a href="https://www.youtube.com/watch?v=$1">YouTube link: $1</a>',
$text);
echo $result;
?>

 

Và đây là kết quả

Get Youtube Video ID from text

Hi vọng bài viết này sẽ giúp ích cho các bạn. Thân ái!

Tấn Việt

Tôi lập trang web này để thỏa mãn sở thích viết cái gì đó vui vui khi rãnh rỗi và đồng thời cũng chia sẻ những gì tôi biết hoặc đọc đâu đó trên mạng về Lập trình web. Tôi hi vọng những bài viết này sẽ giúp ích cho các bạn. Thân ái!

You may also like…

6 Responses

  1. Thach Pham says:

    Rất hay, vô tình thấy bạn comment ở blog mình mà đúng lúc mình đang học PHP 😀

    • Tấn Việt says:

      Cảm ơn bạn đã ủng hộ. Ah, bạn có thể share mình bộ Lizatom Shortcodes được không ? Mình có comment trên blog của bạn nhưng chưa thấy phản hồi 😀

  2. nguyenung says:

    Cám ơn bạn nhiều 🙂

  3. Thach Pham says:

    cảm ơn bạn rất nhiều

  4. Cường says:

    Cho em hỏi cái trong bài viết em có nội https://www.youtube.com/watch?v=3QyrOr3GBjk em muốn lấy dòng 3QyrOr3GBjk để đưa nó lên thẻ meta thì làm để làm open grap thì phải làm thế nào ạ. Làm sao để nó tách 3QyrOr3GBjk ra và đưa lên thẻ meta ạ?

  5. Gachbetongnhe says:

    Cám ơn bạn chia sẻ nhiều!