Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式移动设备音频替换_Javascript_Jquery_Regex_Replace_Podcast - Fatal编程技术网

Javascript正则表达式移动设备音频替换

Javascript正则表达式移动设备音频替换,javascript,jquery,regex,replace,podcast,Javascript,Jquery,Regex,Replace,Podcast,我有一个问题,关于如何使用JavaScript中的正则表达式,通过class=“audioplayer”检查div的每个实例,然后a)如果是在台式计算机上,则在底部添加下载链接;或者b)如果是在iPhone、iPad、iPod上,则使用HTML5音频播放器(使用URL)替换整个内容,等等。以下是主要的HTML: <div class="audioplayer"> <embed src="http://www.site.com/audioplayer.swf" wmode="tr

我有一个问题,关于如何使用JavaScript中的正则表达式,通过
class=“audioplayer”
检查div的每个实例,然后a)如果是在台式计算机上,则在底部添加下载链接;或者b)如果是在iPhone、iPad、iPod上,则使用HTML5音频播放器(使用URL)替换整个内容,等等。以下是主要的HTML:

<div class="audioplayer">
<embed src="http://www.site.com/audioplayer.swf" wmode="transparent" allowscriptaccess="never" allowfullscreen="false" scale="noscale" flashvars="sourceId=4&amp;mp3url=http://brightcove.vo.llnwd.net/pd16/media/44692000001/44692000001_1745411065001_LEOG-18.mp3&amp;autoplay=false&amp;mp3title=THE LEAGUE OF EXTREMELY ORDINARY GENTLEMEN: Conned Out&amp;color=273643" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/products/flashplayer" height="139" width="356"> 
</embed>
</div>

据我所知,此正则表达式将从上述文本中提取任意和所有URL:

/\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\"\\.,<>?\u00AB\u00BB\u201C\u201D\u2018\u2019]))/i
该公司目前的代码主要是以下两种::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::(以下以下以下以下以下:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::8\u2019]))/i 这是我最初的想法模型:

jQuery(document).ready(function($) {
    $("div.audioplayer").each(function () {
        var regex = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\"\\.,<>?\u00AB\u00BB\u201C\u201D\u2018\u2019]))/i;
            if(navigator.platform == 'iPad' || navigator.platform == 'iPhone' || navigator.platform == 'iPod') {
                $(this).empty();
                $(this).append('<audio src="'+regex+'"controls>');
            };
            else(){
                $(this).append('<p></p><p></p><p class="audioembed">Click here to <a href="'+regex+'">Download MP3</a></p>');
            };
    });
});
jQuery(文档).ready(函数($){
$(“div.audioplayer”)。每个(函数(){
[a-z0-9.9.-[10-10-9..[a-z0-9.9.[a-z0-9...[a-z][2.2.5 5 5 5 5 5 5 5 5 5 10 10 10 10 10 10 10 10/b,(,(以下以下:::::::以下以下以下:以下:以下以下:::::::::::::::::////(以下以下以下:::::::::::::::::::::::::)))除除除除除除除除除除除除除上述上述上述上述上述两两两两两两两两名名)))s()()()()()())))))))))的+++除除除除除除除除除除除除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了018\u2019])/i;
如果(navigator.platform==“iPad”| | navigator.platform==“iPhone”| | navigator.platform==“iPod”){
$(this.empty();
$(this.append(“

”); }; }); });
但很明显,我遗漏了一些关键步骤:

1) 我只想在div.audioplayer中的任何内容上运行正则表达式,并且只返回直接位于
mp3url=
之后的URL

2) 很明显,我缺少了一些关于如何获取返回的URL,将其放入变量中,然后在append部分调用该特定变量的内容


如果你能给我任何帮助,或者你能给我指出正确的方向,我将不胜感激

您可以而且应该在不使用正则表达式的情况下遍历DOM节点。你 可以直接使用jQuery或javascript使用适当的选择器来完成。 见:


使用它获取“flashvars”属性,并对其进行字符串处理以检索URL。

您可以尝试读取该属性:

jQuery(document).ready(function($) {
    $(".audioplayer").each(function() {
        var mp3 = $("embed", this).attr("flashvars").match(/mp3url=(.*?)(?:&|$)/)[1];
        if (navigator.platform == 'iPad' || navigator.platform == 'iPhone' || navigator.platform == 'iPod') {
            $(this).empty();
            $(this).append('<audio src="' + mp3 + '"controls>');
        } else {
            $(this).append('<p></p><p></p><p class="audioembed">Click here to <a href="' + mp3 + '">Download MP3</a></p>');
        }
    });
});
jQuery(文档).ready(函数($){
$(“.audioplayer”)。每个(函数(){
var mp3=$(“嵌入”,this).attr(“flashvars”).match(/mp3url=(.*)(:&$)/)[1];
如果(navigator.platform==“iPad”| | navigator.platform==“iPhone”| | navigator.platform==“iPod”){
$(this.empty();
$(this.append(“

”); } }); });
演示: