2010-07-12 5 views
1

Comment pouvez-vous utiliser JQuery pour trouver des URL dans un texte et les convertir automatiquement en un lien hypertexte?Utilisation de JQuery pour créer un lien hypertexte dans un paragraphe

Exemple de texte,

var TextMemo = « Ceci est un texte de paragraphe au hasard, mais je mentionner un lien vers un site Web ici. Www.stackoverflow.com et un autre ici cette fois avec http (http://www.google.co.uk) "

Est-ce une tâche simple?

Un grand merci, Kohan

+0

double possible de [remplacer l'URL avec des liens HTML javascript] (http: //stackoverflow.com/questions/37684/replace-url-with-html-links-javascript) – 4imble

Répondre

1

comment sur cette solution: How to replace plain URLs with links?

+0

On dirait exactement ce que j'ai demandé. Je vais supprimer ceci. Merci beaucoup. (J'ai fait la recherche je promets) – 4imble

+0

pourquoi le vote vers le bas? –

+0

Était pas moi, avoir un autre +1. - M'a aidé. Et n'a pas besoin d'explication. – 4imble

0

Tout d'abord, il ne sera pas aussi simple que le remplacement du texte dans une seule chaîne, car un paragraphe typique sera composé d'un ou plus de nœuds de texte et d'éléments qui doivent être traversés correctement afin d'envelopper efficacement le morceau de texte souhaité. Vous ne devriez pas avoir le texte avec quelque chose comme innerText/textContent ou innerHTML.

Essayez ceci:

var para = jQuery('#my-para')[0]; 

findMatchAndReplace(
    para, 
    /\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/i, 
    '<a href="$&">$&</a>' 
); 

Cette fonction:

function findMatchAndReplace(node, regex, replacement) { 

    var parent, 
     temp = document.createElement('div'), 
     next; 

    if (node.nodeType === 3) { 

     parent = node.parentNode; 

     temp.innerHTML = node.data.replace(regex, replacement); 

     while (temp.firstChild) 
      parent.insertBefore(temp.firstChild, node); 

     parent.removeChild(node); 

    } else if (node.nodeType === 1) { 

     if (node = node.firstChild) do { 
      next = node.nextSibling; 
      findMatchAndReplace(node, regex, replacement); 
     } while (node = next); 

    } 

} 
Questions connexes