2016-07-27 2 views
0

Не могу придумать хорошее название извините! Что он делает! Я ajson файла выглядит немного как это «Вы устали от https://google.com/index.html \ п \ п почему бы не попробовать https://bing.com/index.html»Получение более одного значения

Что я хотел бы, чтобы это сделать, это сделать текст ссылки нажмите DONE ли текст, который отображается на страница только для домена url например google.com

У меня есть работа над точкой. Это нормально, когда первый URL-адрес отформатирован правильно, но не второй.

var url = "You tired of https://google.com/index.html \n\n why not try https://bing.com/index.html "; 
 
linkify(url); 
 
    function linkify(url) { 
 
     
 
     alert(url); 
 
     
 
      var domain; 
 
      //find & remove protocol (http, ftp, etc.) and get domain 
 
      if (url.indexOf("://") > -1) { 
 
       domain = url.split('/')[2]; 
 
      } 
 
      else { 
 
       domain = url.split('/')[0]; 
 
      } 
 

 
      //find & remove port number 
 
      domain = domain.split(':')[0]; 
 
     alert(domain); 
 
    
 
     var replacedText, replacePattern1, replacePattern2, replacePattern3; 
 

 
     //URLs starting with http://, https://, or ftp:// 
 
     replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
 
     replacedText = url.replace(replacePattern1, '<a href="$1" target="_blank">'+domain+'</a>'); 
 

 
     //URLs starting with "www." (without // before it, or it'd re-link the ones done above). 
 
     replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim; 
 
     replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">'+domain+'</a>'); 
 

 
     //Change email addresses to mailto:: links. 
 
     replacePattern3 = /(([a-zA-Z0-9\-\_\.])[email protected][a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim; 
 
     replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>'); 
 

 
     
 
     document.getElementById('out').innerHTML = replacedText;}
<span id="out"></span>

ответ

0

Я вижу, вы уже решили проблему. Но я полагаю, что все равно отправлю решение. Кто знает, вам может понравиться больше. Надеюсь, поможет.

https://jsfiddle.net/90m6ss8b/2/

var url = "You tired of https://google.com/index.html \n\n why not try https://bing.com/index.html "; 
linkify(url); 

function linkify(url) { 
    var matches = url.match(/(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/igm); 

    alert(matches); 

    for (i = 0; i < matches.length; i++) { 
    if (matches[i].indexOf("://") > -1) { 
     alert(matches[i]); 
     matches[i] = matches[i].split('/')[2]; 
     alert(matches[i]); 
    } 
    } 

    alert(matches); 

    var replacedText, replacePattern1, replacePattern2, replacePattern3; 
    replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/im; 
    replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/im; 
    replacePattern3 = /(([a-zA-Z0-9\-\_\.])[email protected][a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/im; 

    replacedText = replaceIndex(url, replacePattern1,'<a href="$1" target="_blank">' + matches[0] + '</a>'); 
    replacedText = replaceIndex(replacedText, replacePattern2,'$1<a href="http://$2" target="_blank">' + matches[0] + '</a>'); 
    replacedText = replaceIndex(replacedText, replacePattern3, '<a href="mailto:$1">$1</a>'); 
    replacedText = replaceIndex(replacedText, replacePattern1,'<a href="$1" target="_blank">' + matches[1] + '</a>'); 
    replacedText = replaceIndex(replacedText, replacePattern2,'$1<a href="http://$2" target="_blank">' + matches[1] + '</a>'); 
    replacedText = replaceIndex(replacedText, replacePattern3, '<a href="mailto:$1">$1</a>'); 

    function replaceIndex(string, pattern, repl) { 
    return string.replace(pattern, function(match, i) { 
     if (i === match) return repl; 
     return match; 
    }); 
    } 

    document.getElementById('out').innerHTML = replacedText; 
} 
+0

Он хорошо работает. Спасибо, но когда количество ссылок отличается от сообщения к сообщению, это может быть немного поражено или пропущено. Я знаю, что могу просто изменить [1] на [2] и так далее. Твой путь более структурирован, я больше работаю. –

0

var url = "You tired of https://google.com/index.html \n\n why not try https://bing.com/index.html "; 
 
    linkify(url); 
 
    function linkify(url) { 
 

 

 
     var replacedText, replacePattern1, replacePattern2, replacePattern3, i; 
 

 
     //URLs starting with http://, https://, or ftp:// 
 
     replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
 
     replacedText = url.replace(replacePattern1, '<a href="$1" class="urlcouint" target="_blank" id="xurl">$1</a>'); 
 

 
     //URLs starting with "www." (without // before it, or it'd re-link the ones done above). 
 
     replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim; 
 
     replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$1</a>'); 
 

 
     //Change email addresses to mailto:: links. 
 
     replacePattern3 = /(([a-zA-Z0-9\-\_\.])[email protected][a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim; 
 
     replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>'); 
 

 

 
     document.getElementById('out').innerHTML = replacedText;} 
 
    
 
     var nubero = ($('a.urlcouint').length); 
 
     for(var i = 0; i < nubero; i++) { 
 
      var domain, url; 
 
      url = document.getElementById('xurl').href; 
 
     //find & remove protocol (http, ftp, etc.) and get domain 
 
     if (url.indexOf("://") > -1) { 
 
      domain = url.split('/')[2]; 
 
     } 
 
     else { 
 
      domain = url.split('/')[0]; 
 
     } 
 

 
     //find & remove port number 
 
     domain = domain.split(':')[0]; 
 
     alert(domain); 
 
     document.getElementById('xurl').innerHTML = domain; 
 
     document.getElementById('xurl').setAttribute('id', 'xurldone');}
<span id="out"></span> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

Смежные вопросы