Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jquery查找文本中的链接?_Javascript_Jquery_Html_Hyperlink - Fatal编程技术网

Javascript 如何使用jquery查找文本中的链接?

Javascript 如何使用jquery查找文本中的链接?,javascript,jquery,html,hyperlink,Javascript,Jquery,Html,Hyperlink,假设我有这样一个文本 “这是一个长文本。包含150个字符。您可以在此链接上找到有关此文本的更多信息。” 所以在上面的文本中,我想找到那个链接,并将它转换成一个链接,这样当用户点击它时,用户将直接被带到这个网站 如何实现这一目标?在jquery中,您可以使用选择器中的标记来获取页面的所有链接$(“a”) 因此,如果你想对页面上的每个链接做些什么,你可以使用 $("a").each(function() { //your code here. you can access the link

假设我有这样一个文本 “这是一个长文本。包含150个字符。您可以在此链接上找到有关此文本的更多信息。”

所以在上面的文本中,我想找到那个链接,并将它转换成一个链接,这样当用户点击它时,用户将直接被带到这个网站


如何实现这一目标?

在jquery中,您可以使用选择器中的标记来获取页面的所有链接<代码>$(“a”)

因此,如果你想对页面上的每个链接做些什么,你可以使用

$("a").each(function() {
    //your code here. you can access the link by using $(this)
});

在jquery中,您可以使用选择器中的标记来获取页面的所有链接<代码>$(“a”)

因此,如果你想对页面上的每个链接做些什么,你可以使用

$("a").each(function() {
    //your code here. you can access the link by using $(this)
});

我怀疑我可以在这方面做得更好,尽管目前这是我能提供的最好的(尽管我认为某种替代可能更有效):

var$words=$('p').text().split(“”);
for(大写美元){
if($words[i].indexOf('http://')==0){
$words[i]='';
}
}
$('p').html($words.join(“”));

上面的一个稍微改进的版本(但天哪,它很丑陋…):

var标点符号=['!'、“'、”、“、”、“、”、”、”;
$('p')。每个(
函数(){
$words=$(this.text().split(“”);
for(大写美元){
if($.inArray($words[i].charAt(0),标点)>-1&&$words[i].indexOf('http://')==1){
警惕($words[i]);
}
如果($.inArray($words[i].charAt($words[i].length-1),标点符号)>-1&($words[i].indexOf('http://'))==1 | |$words[i].indexOf('http://')==0)){
$words[i]=''+$words[i].charAt($words[i].length-1);
}
else if($words[i].indexOf('http://')==0){
$words[i]='';
}
}
$(this.html($words.join(“”));
});


不过,我不太确定如何处理引用的链接(如
之类的文本)http://google.com“
,例如);老实说,我认为正则表达式可能是解决这个问题的更好的方法。

我怀疑我可以在这方面做很多改进,尽管目前这是我能提供的最好方法(尽管我认为某种替代可能更有效):

var$words=$('p').text().split(“”);
for(大写美元){
if($words[i].indexOf('http://')==0){
$words[i]='';
}
}
$('p').html($words.join(“”));

上面的一个稍微改进的版本(但天哪,它很丑陋…):

var标点符号=['!'、“'、”、“、”、“、”、”、”;
$('p')。每个(
函数(){
$words=$(this.text().split(“”);
for(大写美元){
if($.inArray($words[i].charAt(0),标点)>-1&&$words[i].indexOf('http://')==1){
警惕($words[i]);
}
如果($.inArray($words[i].charAt($words[i].length-1),标点符号)>-1&($words[i].indexOf('http://'))==1 | |$words[i].indexOf('http://')==0)){
$words[i]=''+$words[i].charAt($words[i].length-1);
}
else if($words[i].indexOf('http://')==0){
$words[i]='';
}
}
$(this.html($words.join(“”));
});


不过,我不太确定如何处理引用的链接(如
之类的文本)http://google.com“
,例如);老实说,我认为正则表达式可能是解决这个问题的更好的方法。

使用正则表达式

var e = /http:\/\/([A-Za-z0-9\.-_]{2,}\.)+[A-Za-z]{2,}(\/.+)/,
    s = "This is a long text. It contains 150 characters. You can find more about this text on this link http://www.somewebsite.com/RDFCCSDVDS";

if (s.match(e)) {
    var url = RegExp['$&'];
    s = s.replace(url, '<a href="' + url + '">' + url + '</a>');
}
var e=/http:\/\/([A-Za-z0-9\.-\.-\]{2,}\)+[A-Za-z]{2,}(\/.+)/,
s=“这是一个长文本,包含150个字符。您可以在此链接上找到有关此文本的更多信息http://www.somewebsite.com/RDFCCSDVDS";
如果(s.match(e)){
var url=RegExp['$&'];
s=s.replace(url“”);
}

使用正则表达式

var e = /http:\/\/([A-Za-z0-9\.-_]{2,}\.)+[A-Za-z]{2,}(\/.+)/,
    s = "This is a long text. It contains 150 characters. You can find more about this text on this link http://www.somewebsite.com/RDFCCSDVDS";

if (s.match(e)) {
    var url = RegExp['$&'];
    s = s.replace(url, '<a href="' + url + '">' + url + '</a>');
}
var e=/http:\/\/([A-Za-z0-9\.-\.-\]{2,}\)+[A-Za-z]{2,}(\/.+)/,
s=“这是一个长文本,包含150个字符。您可以在此链接上找到有关此文本的更多信息http://www.somewebsite.com/RDFCCSDVDS";
如果(s.match(e)){
var url=RegExp['$&'];
s=s.replace(url“”);
}

使用正则表达式:

$('p').html(function(i, text) {
     return text.replace(
         /\bhttp:\/\/([\w\.-]+\.)+[a-z]{2,}\/.+\b/gi,
         '<a href="$&">$&</a>'
     );
});
$('p').html(函数(i,文本){
返回text.replace(
/\bhttp:\/\/([\w\.-]+\.)+[a-z]{2,}\/.+\b/gi,
''
);
});

使用正则表达式:

$('p').html(function(i, text) {
     return text.replace(
         /\bhttp:\/\/([\w\.-]+\.)+[a-z]{2,}\/.+\b/gi,
         '<a href="$&">$&</a>'
     );
});
$('p').html(函数(i,文本){
返回text.replace(
/\bhttp:\/\/([\w\.-]+\.)+[a-z]{2,}\/.+\b/gi,
''
);
});

@Eric的解决方案非常出色,但我发现如果url后面有空格,则可能是错误的。请使用以下文本尝试他的JSFIDLE示例:

<p>This is a long text. It contains 150 characters. You can find more about this text on this link http://api.som-ewebsite.com/RDFCCS-VDS/#!/?p1=foo&p2=bar right here</p>​​​​​​​​​​​​​​​​​​​​​​​
这是一个长文本。它包含150个字符。您可以在此链接上找到有关此文本的更多信息http://api.som-ewebsite.com/RDFCCS-VDS/#!/?p1=foo和p2=bar就在这里

​​​​​​​​​​​​​​​​​​​​​​​
因此,我修改了正则表达式的最新部分,截取了几乎所有URL友好字符,不包括空格,空格对我来说是URL“终止符”(在现实世界中,当然不是,但我找不到在纯文本中分离普通空格和属于URL的空格的方法)

$('p').html(函数(i,文本){
返回text.replace(
/\必和必拓:\/\/([\w\.-]+\)+[a-z]{2,}([\/\w\.-\\\\\\?\=\!\,\&;]+)/gi,
''
);
});​​
我认为可以改进,欢迎一如既往地提出建议:)

编辑:


无论如何,我认为这是最好的解决方案:

@Eric的解决方案非常出色,但我发现如果url后面有空格,这可能是错误的。使用如下文本尝试他的JSFIDLE示例:

<p>This is a long text. It contains 150 characters. You can find more about this text on this link http://api.som-ewebsite.com/RDFCCS-VDS/#!/?p1=foo&p2=bar right here</p>​​​​​​​​​​​​​​​​​​​​​​​
这是一篇很长的文本。它包含150个字符。您可以在此链接上找到有关此文本的更多信息http://api.som-ewebsite.com/RDFCCS-VDS/#!/?p1=foo&p2=bar就在这里

​​​​​​​​​​​​​​​​​​​​​​?