使用者貼上影片連結,系統自動抓取縮圖顯示預覽,無需使用者手動上傳封面。
<?php
function video_image($url) {
$parsed = parse_url($url);
$host = strtolower($parsed['host'] ?? '');
// YouTube 標準網址:youtube.com/watch?v=VIDEO_ID
if (in_array($host, ['www.youtube.com', 'youtube.com'])) {
parse_str($parsed['query'] ?? '', $query);
$vid = $query['v'] ?? '';
return $vid ? "https://img.youtube.com/vi/{$vid}/0.jpg" : '';
}
// YouTube 短網址:youtu.be/VIDEO_ID
if (in_array($host, ['www.youtu.be', 'youtu.be'])) {
$path = trim($parsed['path'] ?? '', '/');
$vid = explode('/', $path)[0] ?? '';
return $vid ? "https://img.youtube.com/vi/{$vid}/0.jpg" : '';
}
// Vimeo:vimeo.com/VIDEO_ID
if (in_array($host, ['www.vimeo.com', 'vimeo.com'])) {
$video_id = trim($parsed['path'] ?? '', '/');
if ($video_id) {
$api = "https://vimeo.com/api/v2/video/{$video_id}.json";
$data = @file_get_contents($api);
if ($data) {
$arr = json_decode($data, true);
return $arr[0]['thumbnail_medium'] ?? '';
}
}
}
return '';
}
?>
<img src="<?php echo video_image('https://www.youtube.com/watch?v=dQw4w9WgXcQ'); ?>" alt="YouTube 縮圖">
<img src="<?php echo video_image('https://youtu.be/dQw4w9WgXcQ'); ?>" alt="YouTube 短網址縮圖">
<img src="<?php echo video_image('https://vimeo.com/123456789'); ?>" alt="Vimeo 縮圖">
0.jpg (480x360)、1.jpg、2.jpg、3.jpg (120x90)、default.jpg、mqdefault.jpg (320x180)、hqdefault.jpg (480x360)、sddefault.jpg (640x480)、maxresdefault.jpg (1280x720,僅高畫質影片)。https://api.vimeo.com/videos/{id}/pictures。@file_get_contents 抑制警告,生產環境建議用 cURL 設定 timeout、重試、User-Agent。https:// 協定,避免混合內容警告。同理可擴充支援 Dailymotion、Facebook、Bilibili 等,只需: