반응형

1. 함수

function getYoutubeId($url) {
// 유튜브 URL 형식에 맞는 정규식 패턴 (youtu.be, youtube.com/watch, embed, v, shorts 지원)
$pattern = '/(?:youtu\.be\/|youtube\.com\/(?:watch\?v=|embed\/|v\/|shorts\/))([^#&?]{11})/';
// 정규식을 사용해 URL에서 비디오 ID 추출
preg_match($pattern, $url, $matches);
// 추출된 ID가 11자리인지 확인 후 반환, 아니면 false 반환
return (isset($matches[1]) && strlen($matches[1]) == 11) ? $matches[1] : false;
}

 

2. 사용법

$videoId = getYoutubeId($url);
echo $videoId;

 

3. 예제

// 사용 예제
$urls = [
"https://www.youtube.com/watch?v=abcd1234efg",
"https://youtu.be/abcd1234efg",
"https://www.youtube.com/embed/abcd1234efg",
"https://www.youtube.com/shorts/abcd1234efg",
"https://www.youtube.com/v/abcd1234efg",
"https://youtube.com/shorts/abcd1234efg?si=u3aq_zRejUsppB0W",
"https://youtu.be/abcd1234efg?si=uGSa0bsJfYVrH-MD",
];
foreach ($urls as $url) {
$videoId = getYoutubeId($url);
if ($videoId) {
echo "추출된 비디오 ID: $videoId\n<br>";
} else {
echo "유효하지 않은 URL 또는 비디오 ID를 찾을 수 없습니다.\n<br>";
}
}

 

4. 결과

추출된 비디오 ID: abcd1234efg
추출된 비디오 ID: abcd1234efg
추출된 비디오 ID: abcd1234efg
추출된 비디오 ID: abcd1234efg
추출된 비디오 ID: abcd1234efg
추출된 비디오 ID: abcd1234efg
추출된 비디오 ID: abcd1234efg

 

5. 지원되는 URL 형식

  1. 기본 YouTube 동영상 URL
    • https://www.youtube.com/watch?v=dQw4w9WgXcQ
    • 추출된 ID: dQw4w9WgXcQ
  2. 짧은 YouTube URL
    • https://youtu.be/dQw4w9WgXcQ
    • 추출된 ID: dQw4w9WgXcQ
  3. 임베드(Embed) URL
    • https://www.youtube.com/embed/dQw4w9WgXcQ
    • 추출된 ID: dQw4w9WgXcQ
  4. YouTube Shorts URL
    • https://youtube.com/shorts/dQw4w9WgXcQ
    • 추출된 ID: dQw4w9WgXcQ
  5. 쿼리 파라미터가 포함된 Shorts URL
    • https://youtube.com/shorts/abcd1234efg?si=u3aq_zRejUsppB0W
    • 추출된 ID: abcd1234efg
  6. 쿼리 파라미터가 포함된 짧은 URL
    • https://youtu.be/abcd1234efg?si=uGSa0bsJfYVrH-MD
    • 추출된 ID: abcd1234efg
  7. 추가 쿼리 파라미터가 포함된 기본 YouTube URL
    • https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtu.be
    • 추출된 ID: dQw4w9WgXcQ
  8. 플레이리스트가 포함된 기본 YouTube URL
    • https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLwxnUUM01nt2nMh9DPq09e6fIDbumybgt
    • 추출된 ID: dQw4w9WgXcQ
반응형
만두남