我有这个字符串列表:滤波器地址URL
var s="http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";
,输出将是:
website1.com website2.es website3.info website.is
我怎样才能在jQuery的最小模糊或的JavaScript实现这一目标?
我有这个字符串列表:滤波器地址URL
var s="http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";
,输出将是:
website1.com website2.es website3.info website.is
我怎样才能在jQuery的最小模糊或的JavaScript实现这一目标?
不是最有效的,但使用parse_url从PHP .js文件(http://phpjs.org/functions/parse_url/):
var sList = "http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";
var aStr = sList.split(', ');
var sResult = "";
for(var i in aStr)
{
var oUrlParts = parse_url(aStr[i]);
sResult += oUrlParts['host']+"\n\n";
}
console.log(sResult);
你测试过了吗?它为第四个值“website4.is”给出了“undefined”,并且它将“www”子域保留在前两个值上。 http://jsfiddle.net/KUGbN/ – 2013-05-08 00:20:26
确认。似乎在字符串中需要一个前导'protocol://',否则它会给出'undefined'。 http://jsfiddle.net/KUGbN/2/ – GitaarLAB 2013-05-08 02:08:49
为什么不能简单:
//your string:
var str=("http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is");
//my function:
function gtBaseUrl(s){
return s.split('://').pop().split('/')[0];
}
//example use:
var lnks=str.split(', ');
for(var i=0, L=lnks.length; i < L; i++){
//do stuff with each url
alert(gtBaseUrl(lnks[i]).replace(/^www./i,''));
//if you don't want www. stripped then remove: ' .replace(/^www./i,'') '
}
工作的jsfiddle演示here。
您可以修改for循环它到任何(格式化输出),您需要(使用innerHTML
和br
或\n
在文字区域等)
你明确地剥离了“www”子域名,但是其他子域名(* foo * .bar.com)呢?子域可能应该被纳入或排除在全局之外,而不是像这样选择性地选择。 – 2013-05-08 00:38:02
@DaggNabbit:我知道,但那么'foo.co.uk'和'www.foo.co.uk'怎么办?事实上,对于其他读者来说,可能会更好(略去'.replace(/^www./i,'')'),但它不符合www被剥离的提问者问题。 – GitaarLAB 2013-05-08 00:43:23
是的,这是与试图删除子域名的问题,你需要检查它与实际顶级域名列表,这是一个looong名单...真的你的答案是唯一一个实际上做OP的要求(给他样本数据,至少)。我只留下了我的答案,因为它给出了与接受的答案相同的结果,但代码少一些。 – 2013-05-08 00:47:36
的常用方法在JavaScript中做,这是创建一个a
元素,网址分配给它的href
属性,然后获取其hostname
PROPERT年。
var a = document.createElement('a');
a.href = "http://stackoverflow.com/questions/16429929/filter-address-url";
console.log(a.hostname); // "stackoverflow.com"
没有外部依赖关系,三行代码。
当然,你也可以这样做:
"http://stackoverflow.com/questions/16429929/filter-address-url".split('/')[2]
从你的问题,看起来你不想在结果子域( “WWW”),但因为您接受了返回子域名的答案(并且在第四个值上失败),所以我会在这里留下。
+1为正确的方式。但''http://stackoverflow.com/questions/16429929/filter-address-url“.split('/')[2]'不会工作给askers的例子(其中网址没有http://)。 PS,你对我的回答有什么看法?你能想到一个有效的网址,我的功能会失败吗? – GitaarLAB 2013-05-08 00:38:03
@GitaarLAB,好点(虽然接受的答案也失败了,实际上它不是一个合适的URL,所以“真正的”解决方案,无论它是什么,可能“应该”都会失败):)只留下一条评论回答... – 2013-05-08 00:38:37
你需要一个数组来处理? – Simon 2013-05-07 23:04:06