![](/img/trans.png)
[英]JavaScript- Base64: How To Fetch a List of URLs From an array And Convert Them To Base64?
[英]How to fetch urls in array from paragraphs in javascript
我想获取数组中JavaScript的段落或句子中所有可用的URL。 例如,检查以下段落:
请检出http://stackoverflow.com 。 它具有非常酷的徽标https://d13yacurqjgara.cloudfront.net/users/1249/screenshots/2247671/stackoverflow.png 。
从上面的字符串中,我们必须获取这两个URL的数组。
解决方案1:解决方案1,我知道是用空格分割段落,遍历数组,然后逐一检查URL,然后推入URL的数组。 但是,这是需要时间的解决方案。
有没有找到更好的解决方案,或者上述解决方案最快且可行?
谢谢。
这是你想要的?
var list = [];
var sentence = "Please checkout http://stackoverflow.com. It has very cool logo https://d13yacurqjgara.cloudfront.net/users/1249/screenshots/2247671/stackoverflow.png.";
var result = checkForURL(sentence);
function checkForURL(text) {
var urlRegex = /(https?:\/\/[^\s]+)/g;
return text.replace(urlRegex, function (url) {
return '<a>' + url + '</a>';
})
}
var number = result.split('<a>');
for (var i = 1; i < number.length; i++) {
list.push(number[i].split(".</a>")[0]);
}
alert(list);
您可能希望在://
上拆分,以获取一个较小的数组进行迭代。
例:
演示 JSFiddle
的HTML
<p id='p'>
Please checkout http://stackoverflow.com. It has very cool logo https://d13yacurqjgara.cloudfront.net/users/1249/screenshots/2247671/stackoverflow.png.
</p>
<h4>
URLs
</h4>
<ol id='results'>
</ol>
Java脚本
findUrls();
function findUrls(){
var p = document.getElementById('p');
var res = document.getElementById('results');
var pStr = p.innerText;
var parts = pStr.split(/:\/\//);
if (parts.length < 2)
return;
for (var i = 1 ; i < parts.length ; i++){
var part = parts[i];
var lastPart = parts[i-1];
if (lastPart.length < 4 )
continue;
if (lastPart.length >= 4 && lastPart.substr(-4) == 'http')
part = 'http://' + part;
else if (lastPart.length >= 5 && lastPart.substr(-5) == 'https')
part = 'https://' + part;
var firstSpace = part.indexOf(' ');
if (firstSpace > -1)
part = part.substring(0, firstSpace);
var lastChar = part.charAt(part.length - 1);
if (lastChar == ',' || lastChar == '.' /* || ... */)
part = part.substring(0,part.length - 1);
res.innerHTML += '<li>' + part + '</li>'; // or push part to some result array
}
}
试试这种方法。 它可能需要一些微调。
var paragraphs = document.getElementsByTagName('p') var regex = /(https?:\\/\\/.*?)(\\s|$)/g; var urls = []; var badLastChars = [".", ","]; for (var i = 0; i < paragraphs.length; i++) { var p = paragraphs[i].innerText; var match; while (match = regex.exec(p)) { var url = match[1]; var lastChar = url[url.length-1]; if (badLastChars.indexOf(lastChar) > -1 ) { url = url.slice(0,url.length-1); } console.log(url); urls.push(url); } }
<p> Please checkout http://stackoverflow.com. It has very cool logo https://d13yacurqjgara.cloudfront.net/users/1249/screenshots/2247671/stackoverflow.png.</p> <p> Another paragraph https://stackexchange.com. and here is another url I am making up: https://mycoolurlexample.com/this/is/an/example</p>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.