비디오 링크, 특히 YouTube와 같은 플랫폼을 처리 할 때 비디오의 고유 식별자 (비디오 ID)를 추출하는 것은 많은 응용 프로그램 시나리오에서 일반적인 요구 사항입니다. 예를 들어, 사용자 제출 YouTube 링크를 웹 페이지에 포함 시키거나 데이터베이스에 저장하려는 경우 비디오 ID 만 유지하는 것이 더 효율적이고 일관성이 있습니다. PHP에서는 내장 된 parse_url 함수를 사용 하여이 기능을 구현할 수 있습니다.
이 기사는 parse_url을 다른 기능과 결합하여 YouTube 링크에서 비디오 ID를 추출하는 방법을 소개합니다.
실제 응용 프로그램에서 YouTube의 링크 형식에는 다음과 같은 공통 양식이있을 수 있습니다.
표준 링크 :
https://www.youtube.com/watch?v=VIDEO_ID
짧은 링크 :
https://youtu.be/VIDEO_ID
Embed Link :
https://www.youtube.com/embed/VIDEO_ID
parse_url 기능은 URL을 체계, 호스트, 경로, 쿼리 등과 같은 여러 부분으로 분해 할 수 있습니다.이 기능을 사용하여 YouTube 링크를 쉽게 분석 할 수 있습니다.
function extractYouTubeID($url) {
$parsedUrl = parse_url($url);
// 표준 링크 https://www.youtube.com/watch?v=VIDEO_ID
if (isset($parsedUrl['host']) && strpos($parsedUrl['host'], 'youtube.com') !== false) {
if (isset($parsedUrl['path']) && $parsedUrl['path'] === '/watch') {
if (isset($parsedUrl['query'])) {
parse_str($parsedUrl['query'], $queryParams);
if (isset($queryParams['v'])) {
return $queryParams['v'];
}
}
}
// 링크를 포함시킵니다 https://www.youtube.com/embed/VIDEO_ID
if (strpos($parsedUrl['path'], '/embed/') === 0) {
return substr($parsedUrl['path'], strlen('/embed/'));
}
}
// 짧은 링크 https://youtu.be/VIDEO_ID
if (isset($parsedUrl['host']) && $parsedUrl['host'] === 'youtu.be') {
return ltrim($parsedUrl['path'], '/');
}
return null; // 인식되지 않은 형식
}
$links = [
'https://www.youtube.com/watch?v=abc123XYZ',
'https://youtu.be/abc123XYZ',
'https://www.youtube.com/embed/abc123XYZ',
'https://gitbox.net/watch?v=abc123XYZ', // 아니요 YouTube 도메인 이름,돌아와야합니다 null
];
foreach ($links as $link) {
$videoId = extractYouTubeID($link);
echo "링크:$link\n";
echo "동영상 ID:" . ($videoId ?? '식별되지 않았습니다') . "\n\n";
}
위의 코드는 세 가지 공통 링크 양식을 고려했지만 실제로 사용하면 첨부 된 매개 변수 순서와 타임 스탬프 매개 변수도 발생할 수 있습니다. 견고성을 향상시키기 위해 parse_str 이후 매개 변수에 대해 더 많은 검증이 수행 될 수 있습니다.
신뢰할 수있는 소스 만 처리되도록 도메인 이름을 교체하거나 비 Youtube 링크를 식별 할 때 특히주의하십시오.
PARSE_URL 및 PARSE_STR 와 같은 내장 기능을 통해 PHP는 URL을 효율적으로 구문 분석하고 특정 매개 변수를 추출 할 수 있습니다. 이 방법은 간단 할뿐만 아니라 유지 관리가 양호합니다. 다양한 프로젝트에서 재사용 할 수있는 일반적인 기능으로 캡슐화하고 개발 효율성을 향상시킬 수 있습니다.