我聊天,当有人发送YouTube链接时,我想立即将其转换为可播放的视频。
因此,当用户发送以下格式的链接时
http://www.youtube.com/watch?v=kLORyXO8mVc
http://www.youtube.com/watch?v=kLORyXO8mVc&feature=related
它会将链接转换为此代码
<div id='mediaspace'>Youtube</div>
<script type='text/javascript'>
jwplayer('mediaspace').setup({
'flashplayer': 'player.swf',
'file': 'XXXXXX-YOUTUBE-VIDEO-URL-GOES-HERE-XXXXXX',
'controlbar': 'bottom',
'width': '350',
'height': '230'
});
</script>
也可以只使用此格式的youtube链接
http://www.youtube.com/watch?v=kLORyXO8mVc
以及用户发送的附加&feature
或更多内容的任何链接都将仅删除标准网址http://www.youtube.com/watch?v=kLORyXO8mVc
这是我想出的但是它不起作用:
$().ready(function() {
var regEx = /http://(www\.)?youtube\.com/watch\?.*v=([a-zA-Z0-9]+)/;
$("body").filter(function() {
return $(this).html().match(regEx);
}).each(function() {
$(this).html($(this).html().replace(regEx, '
<div id='mediaspace'>Youtube</div>
<script type='text/javascript'>
jwplayer('mediaspace').setup({
'flashplayer': 'player.swf',
'file': '$1',
'controlbar': 'bottom',
'width': '350',
'height': '230'
});
</script>
'));
});
});
答案 0 :(得分:1)
你的代码在正则表达式中没有转义(你不能使用/ inside / without escaping),或你的替换字符串(你不能在没有转义的情况下使用'inside')。试试这个:
var regEx = /http:\/\/(www\.)?youtube\.com\/watch\?.*v=([a-zA-Z0-9]+)/;
$("body").filter(function() {
return $(this).html().match(regEx);
}).each(function() {
$(this).html($(this).html().replace(regEx, "<div id='mediaspace'>Youtube</div><script type='text/javascript'>jwplayer('mediaspace').setup({'flashplayer': 'player.swf','file': '$1','controlbar': 'bottom','width': '350','height': '230'});</scr"+"ipt>"));
});