2012-02-23 5 views
0

私は埋め込み動画にYouTubeやVimeoのURLを回すために、次のコードを使用しています:彼らは自分自身であるURLが終了したらjQueryに伝えますか?

$('.media-supported li, .blog-post').html(function(i, html) { 

    return html.replace(/(?:http:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g, '<div class="media-item"><iframe width="940" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe></div>'); 

}); 
$('.media-supported li, .blog-post').html(function(i, html) { 

    return html.replace(/(?:http:\/\/)?(?:www\.)?(?:vimeo\.com)\/(?:clip\?v=)?(.+)/g, '<div class="media-item"><iframe src="http://player.vimeo.com/video/$1?title=0&byline=0&portrait=0" width="940" frameborder="0"></iframe></div>'); 

}); 

場合、それは正常に動作します。しかし、彼らがパラガープに包まれているとき、彼らはURLの一部として終了タグを取る。

あなたは、私がこのフィドルに何を意味するかを見ることができます - おそらく<場合終了またはスペース場合は終了、または両方 - http://jsfiddle.net/xH7xK/

それはURLが終了しますコードを伝えることは可能ですか?

+0

誰もが応答しない場合、誰かがビデオを見ている可能性があります –

+0

@roXon、私以外は誰もが! – Justin

答えて

1

あなたはこのにあなたの正規表現を変更することができます:

html.replace(/(?:http:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?([^<\s]+)/g, '<div class="media-item"><iframe width="940" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe></div>')); 

これは<または空白にURLを終了します。

Youtubeが([a-zA-Z0-9] +)のようなビデオIDとして使用する文字と数字のみを一致させるのが良い解決策ですが、 。

+0

私は正しい軌道に乗ってくれてありがとうOiva。 Youtubeの場合、私は([a-zA-Z0-9 \ - \ _] +)を使用し、Vimeoは私が使用しました:(\ d +)//はすべて動作しているようです。 – Justin

関連する問題