【问题标题】:Extract string from img src attribute?从 img src 属性中提取字符串?
【发布时间】:2011-10-31 09:45:00
【问题描述】:

我如何从以下 img src 获取 fontsize、fonttext 和 fonttype 值

<img 
  src="bin/contenthandler.php?fontsize=36&fonttext=apple&fonttype=fonts/FOO.ttf"
  class="selected content resizable">

我认为它可以用正则表达式来完成,但我对它们不好。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    使用 location 对象是理想的,避免了所有麻烦的正则表达式。 借自: Parse URL with jquery/ javascript?https://developer.mozilla.org/en/window.location

    function buildValue(sValue) {  
        if (/^\s*$/.test(sValue)) { return(null); }  
        if (/^(true|false)$/i.test(sValue)) { return(sValue.toLowerCase() === "true"); }  
        if (isFinite(sValue)) { return(parseFloat(sValue)); }  
        if (isFinite(Date.parse(sValue))) { return(new Date(sValue)); }  
        return(sValue);  
    }      
    function getVars(url) {
        var oGetVars = {};  
        var a = document.createElement('a');
        a.href = url;
        var iCouple, aCouples = a.search.substr(1).split("&");  
        for (var iCouplId = 0; iCouplId < aCouples.length; iCouplId++) {  
            iCouple = aCouples[iCouplId].split("=");  
            oGetVars[unescape(iCouple[0])] = iCouple.length > 1 ?     buildValue(unescape(iCouple[1])) : null;  
        }  
        return oGetVars;
    }
    
    console.log(getVars('http://google.com?q=123&y=xyz'));  
    

    这将返回一个包含所有查询变量的对象。
    jsFiddle Demo

    【讨论】:

    • 迄今为止最好的答案,并且可重复使用:)
    【解决方案2】:

    尽管有其他两个答案,这里有一个替代方案,

    $('img[src]').each(function (i,n){
       var item  = $(n).attr('src');
       var query = item.split('?');
       var items = query.split('&') ;
       // so now you get the point, u split each item again by the "=" sign :) this is reusable     
       // provided you put it on a function, and it can search to return a specific one, with a little imagination :) 
    });
    

    另一种选择是使用 URI 库。

    我已经用过很多次了,你得到了你想要的,并且得到了与 URI/URL 操作有关的一切。

    http://medialize.github.io/URI.js/

    $('img[src]').each(function (i,n){
       var src  = $(n).attr('src');
       var get_query = URI(src).query()
       console.log(get_query)
    });
    

    这里有一些例子......

    URI("testme?test").query();// returns: test
    URI("testme?a=1&b=2").query(true) // returns: {a: "1", b: "2"}
    URI("testme?font_size=15&font_name=arial").query(true).font_size // 15
    

    更多关于如何使用的信息...点击这里http://medialize.github.io/URI.js/docs.html#accessors-search

    【讨论】:

      【解决方案3】:

      这将为您提供值36

      var rx = /fontsize=(.*?)&/;
      var fontsize = rx.exec('<img src="bin/contenthandler.php?fontsize=36&fonttext=apple&fonttype=fonts/FOO.ttf" class="selected content resizable">')[1];
      

      【讨论】:

        猜你喜欢
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        • 2017-10-14
        • 2013-04-06
        • 1970-01-01
        • 2020-02-25
        • 2017-04-08
        • 1970-01-01
        相关资源
        最近更新 更多