-4

我有这个示例字符串列表:

var s="http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";

输出将是:

网站1.com

网站2.es

网站3.info

网站.is

如何在 jqueryjavascript中用最少的模糊来实现这一点?

4

3 回答 3

2

不是最有效的,但使用 php.js 中的 parse_url ( 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);
于 2013-05-07T23:27:49.477 回答
2

Why not simply this:

//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,'') '
}

Working jsfiddle demo here.

You can modify the for-loop it to whatever (formatted output) you need (using innerHTML and br or \n for in textarea, etc.)

于 2013-05-07T23:14:21.333 回答
1

在 JavaScript 中执行此操作的常用方法是创建一个a元素,将 URL 分配给它的href属性,然后获取它的hostname属性。

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”),但是由于您接受了返回子域的答案(并且在第四个值上失败),所以我将把它留在这里。

于 2013-05-08T00:13:07.693 回答