如何用JavaScript/jQuery替换和缩短一段文本中的超链接
How to replace and shorten hyperlinks in a paragraph of text with JavaScript/jQuery?
假设我有一段文字:
The Northrop Grumman X-47B https://en.wikipedia.org/wiki/Northrop_Grumman_X-47B
is a demonstration unmanned combat air vehicle (UCAV) designed for carrier-based
operations.
我想替换文本中的超链接并将其转换为真正的超链接。同时,我想将超链接的措辞缩短为固定的 20 个字符,以便用户阅读的文本更短,例如
- 诺斯罗普·格鲁曼公司的X-47B https://en.wikipedia.org...是一种演示无人作战飞行器(UCAV),专为基于航母的操作。
因此,文本中链接的代码可能如下所示:
<a href="https://en.wikipedia.org/wiki/Northrop_Grumman_X-47B">https://en.wikipedia.org...</a>
我环顾四周,发现了一些例子,但它们根本不起作用。我只想要一个标准的JavaScript函数来做到这一点。也就是说,一个接受纯文本(不是 HTML)并可以转换文本的函数。不确定如何同时防范XSS。
我怀疑它会涉及循环遍历文本的每个部分的组合,然后使用一些正则表达式来查找 URL,提取它,然后使用 substr() 缩短 URL,然后以某种方式将其替换为文本。知道怎么做吗?
感谢您的帮助。
像这样:
$('p').html(function(_,txt) {
var exp = /('b(https?|ftp|file):'/'/[-A-Z0-9+&@#'/%?=~_|!:,.;]*[-A-Z0-9+&@#'/%=~_|])/ig;
return txt.replace(exp, function(l) {
return '<a href="'+l+'">'+l.substr(0,20)+'...</a>'
});
});
小提琴
使用此脚本
<script>
function convertlink(text) {
var urlRegex = /(https?:'/'/[^'s]+)/g;
return text.replace(urlRegex, function(url) {
return '<a href="' + url + '">' + geturl(url) + '</a>';
})
}
function geturl(url){
if(url.length > 20){
return url.substr(0,20) + "...";
} else {
return url;
}
}
var str = "The Northrop Grumman X-47B https://en.wikipedia.org/wiki/Northrop_Grumman_X-47B is a demonstration unmanned combat air vehicle (UCAV) designed for carrier-based operations."
alert(convertlink(str));
</script>
我编辑了批准的答案以返回您需要的内容。这将替换链接文本,而不考虑链接(即,它不是指向维基百科的链接)。
function replaceURLWithHTMLLinks(text) {
var exp = /('b(https?|ftp|file):'/'/[-A-Z0-9+&@#'/%?=~_|!:,.;]*[-A-Z0-9+&@#'/%=~_|])/ig;
return text.replace(exp, function ($1) {
return '<a href="' + $1 + '">' + $1.slice(0, 20) + '...</a>';
});
}
小提琴
相关文章:
- 在一段时间内切换文本
- 如何停止字幕文本一段时间,然后继续
- 如何使用jquery/js/css逐步突出显示一段文本
- 如何成功显示和隐藏一段文本
- 如何在javascript中用字符串变量替换一段文本
- 如何在一段时间后更改文本的颜色
- 仅显示变量内的一段文本
- 如何从HTML页面的源代码中获取一段文本
- Jquery 在文本中淡出一段时间
- Javascript获取HTML块中的最后一段文本
- 如何用JavaScript/jQuery替换和缩短一段文本中的超链接
- 如何在网站上制作动画,每秒钟就会有一段文本发生变化
- 给定一段文本,如何获取从开头到最后一个空格的所有内容
- 从一段文本中找出javascript中的关键字
- 如何切换页面的一个部分,使其从一段文本转到另一段文本
- 根据位置自动更新一段文本
- 如何将一段文本分割成句子和/或段落
- Javascript或jquery,如何显示数组中的文本,并在按下按钮时将文本更改为数组中的下一段文本
- ng-repeat不显示最后一段文本
- 如何从以前单击的链接或页面名称中解析一段文本