v=id
JavaScript (jQuery, 순수 JavaScript 없음)를 사용하여 YouTube의 URL에서 가져오고 싶습니다 .
YouTube URL 형식의 예
http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW
http://www.youtube.com/watch?v=u8nQa1cJyX8
또는 URL에 비디오 ID가 포함 된 다른 YouTube 형식.
이 형식의 결과
u8nQa1cJyX8
답변
이를 위해 정규 표현식을 사용할 필요는 없습니다.
var video_id = window.location.search.split('v=')[1];
var ampersandPosition = video_id.indexOf('&');
if(ampersandPosition != -1) {
video_id = video_id.substring(0, ampersandPosition);
}
답변
“jeffreypriebe”에서 제공하는 Regex를 개선했습니다. 채널을 통해 볼 때 비디오의 URL 인 YouTube URL이 필요했기 때문입니다.
글쎄요, 그러나 이것은 제가 무장 한 기능입니다.
<script type="text/javascript">
function youtube_parser(url){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
var match = url.match(regExp);
return (match&&match[7].length==11)? match[7] : false;
}
</script>
지원되는 URL 유형입니다
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
[http://web.archive.org/web/20160926134334/] 에서 찾을 수 있습니다 . http://lasnv.net/foro/839/Javascript_parsear_URL_de_YouTube
답변
Lasnv의 답변을 약간 단순화했습니다.
또한 WebDeb이 설명하는 버그를 수정합니다.
여기있어:
var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match && match[2].length == 11) {
return match[2];
} else {
//error
}
재생할 regexer 링크는 다음과 같습니다.
http://regexr.com/3dnqv
답변
이들 중 어느 것도 2015 년 1 월 1 일부로 부엌 싱크대에서 작동하지 않았으며, 특히 프로토 타입 http / s가없고 youtube-nocookie 도메인이있는 URL이 없었습니다. 여기 다양한 유튜브 버전에서 작동하는 수정 된 버전이 있습니다 :
// Just the regex. Output is in [1].
/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/
// For testing.
var urls = [
'//www.youtube-nocookie.com/embed/up_lNV-yoK4?rel=0',
'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo',
'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
'http://www.youtube.com/user/SilkRoadTheatre#p/a/u/2/6dwqZw0j_jY',
'http://youtu.be/6dwqZw0j_jY',
'http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be',
'http://youtu.be/afa-5HQHiAs',
'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo?rel=0',
'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
'http://www.youtube.com/embed/nas1rJpm7wY?rel=0',
'http://www.youtube.com/watch?v=peFZbP64dsU',
'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player'
];
var i, r, rx = /^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/;
for (i = 0; i < urls.length; ++i) {
r = urls[i].match(rx);
console.log(r[1]);
}
답변
/^.*(youtu.be\/|v\/|e\/|u\/\w+\/|embed\/|v=)([^#\&\?]*).*/
에 테스트 :
- http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=ko_rel&rel=0
- http://www.youtube.com/embed/0zM3nApSvMg?rel=0
- http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
- http://www.youtube.com/watch?v=0zM3nApSvMg
- http://youtu.be/0zM3nApSvMg
- http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
- http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/KdwsulMb8EQ
- http://youtu.be/dQw4w9WgXcQ
- http://www.youtube.com/embed/dQw4w9WgXcQ
- http://www.youtube.com/v/dQw4w9WgXcQ
- http://www.youtube.com/e/dQw4w9WgXcQ
- http://www.youtube.com/watch?v=dQw4w9WgXcQ
- http://www.youtube.com/?v=dQw4w9WgXcQ
- http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ
- http://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ
- http://www.youtube.com/user/IngridMichaelsonVEVO#p/u/11/KdwsulMb8EQ
- http://www.youtube-nocookie.com/v/6L3ZvIMwZFM?version=3&hl=ko_KR&rel=0
이 다른 답변에서 영감을 얻었습니다 .
답변
YouTube에는 다양한 URL 스타일이 있으므로 Regex가 더 나은 솔루션이라고 생각합니다. 내 정규식은 다음과 같습니다.
^.*(youtu.be\/|v\/|embed\/|watch\?|youtube.com\/user\/[^#]*#([^\/]*?\/)*)\??v?=?([^#\&\?]*).*
그룹 3에는 YouTube ID가 있습니다
샘플 YouTube URL (현재 “레거시 포함 URL 스타일”포함)-위의 정규식은 모든 URL에서 작동합니다.
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
Lasnv의 모자 팁
답변
유튜브, Soundcloud 또는 Vimeo 임베디드 ID에 대한 사용자 입력을 테스트하여 임베디드 미디어로 더욱 지속적인 디자인을 만들 수있는 기능을 만들었습니다. 이 함수는 “type”과 “id”라는 두 가지 속성을 가진 객체를 감지하고 반환합니다. 유형은 “youtube”, “vimeo”또는 “soundcloud”일 수 있으며 “id”속성은 고유 한 미디어 ID입니다.
사이트에서 나는 텍스트 영역 덤프를 사용하는데, 여기서 사용자는 vimeo와 youtube의 iFrame-embedding을 포함하여 모든 유형의 링크 또는 소스 코드에 붙여 넣을 수 있습니다.
function testUrlForMedia(pastedData) {
var success = false;
var media = {};
if (pastedData.match('http://(www.)?youtube|youtu\.be')) {
if (pastedData.match('embed')) { youtube_id = pastedData.split(/embed\//)[1].split('"')[0]; }
else { youtube_id = pastedData.split(/v\/|v=|youtu\.be\//)[1].split(/[?&]/)[0]; }
media.type = "youtube";
media.id = youtube_id;
success = true;
}
else if (pastedData.match('http://(player.)?vimeo\.com')) {
vimeo_id = pastedData.split(/video\/|http:\/\/vimeo\.com\//)[1].split(/[?&]/)[0];
media.type = "vimeo";
media.id = vimeo_id;
success = true;
}
else if (pastedData.match('http://player\.soundcloud\.com')) {
soundcloud_url = unescape(pastedData.split(/value="/)[1].split(/["]/)[0]);
soundcloud_id = soundcloud_url.split(/tracks\//)[1].split(/[&"]/)[0];
media.type = "soundcloud";
media.id = soundcloud_id;
success = true;
}
if (success) { return media; }
else { alert("No valid media id detected"); }
return false;
}