Как преобразовать URL (веб-сайты, электронная почта) из строки в HTML-теги с помощью JavaScript

Быстрое внедрение

Если вы хотите быстро преобразовать текстовую ссылку в интерактивные ссылки (внутри dom или строки), вам нужно знать, что эту задачу нелегко сделать самостоятельно. URI сложны, и есть миллионы случаев, когда ваша самореализованная функция может потерпеть неудачу. Например :

function linkify(inputText) {
var replacedText, replacePattern1, replacePattern2, replacePattern3;
//URLs starting with http://, https://, or ftp://
replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
replacedText = inputText.replace(replacePattern1, '$1');
//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$2');
//Change email addresses to mailto:: links.
replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;
replacedText = replacedText.replace(replacePattern3, '$1');
return replacedText;
}

Предыдущая функция работала бы, но есть лучший способ решить эту задачу.

Использовать библиотеку (Linkify.js)

Ну, первый пункт — чистый и функциональный, но в некоторых случаях он может потерпеть неудачу. Вместо того, чтобы испытывать головную боль при обучении обработке строки и поиску URL-адресов, мы рекомендуем вам использовать библиотеку, которая будет выполнять всю эту работу за вас.

Мы говорим о Linkify.js. Linkify — это плагин JavaScript для поиска ссылок в виде простого текста и их преобразования в HTML. теги. Он работает со всеми действительными веб-адресами и адресами электронной почты. Чтобы включить linkify в свой проект, посетите домашнюю страницу и загрузите дистрибутив (или используйте npm или bower) и включите сценарии в свой документ:


Linkify предлагает более 1 способа инициализации, с помощью jQuery вы можете напрямую конвертировать DOM-контент в ссылки, например:


Visit site.com , it has a lot of interesting content. You can contact us writing to dev@site.com
$("#linkDemo").linkify({
target:"_blank"
});

Должен выводить:

Визит site.com , в нем много интересного контента. Вы можете связаться с нами, написав dev@site.com

Или используйте только ядро ​​linkify без jQuery (Узнайте больше о режимах здесь):


var str = '

For help with GitHub.com, please email support@github.com

'; var processedContent = linkifyStr(str, options); // or // var processedContent = str.linkify(); document.getElementById("linkDemo").innerHTML = processedContent;

Вы можете проверить свой собственный текст в официальном домашняя страница здесь, повеселись !

Ссылка на основную публикацию
Adblock
detector