将youtube链接转换为jwplayer嵌入代码

时间:2011-06-12 23:04:13

标签: jquery youtube

我聊天,当有人发送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>
        '));
    });
});

1 个答案:

答案 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>"));
});