Javascript - Как удалить ссылку в ссылках - PullRequest
0 голосов
/ 16 мая 2011

Допустим, строка содержит <a href="http://google.com">http://google.com</a>.Когда я связываю всю строку (которая имеет как несвязанные URL-адреса, так и связанные URL-адреса, как показано выше), она становится <a href="<a "" href="http://google.com"">http://google.com"</a>>http://google.com</a>.

Есть ли способ отменить неправильные ссылки (которые являютсяуже связаны до ссылки) обратно к <a href="http://google.com">http://google.com</a>?

Я обнаружил в WordPress, что для этого используется $ret = preg_replace("#(]+?>|>))]+?>([^>]+?)#i", "$1$3", $ret); (в wp-includes / formatting.php).Может ли кто-нибудь помочь мне сделать это в JavaScript?

1 Ответ

0 голосов
/ 16 мая 2011

Посмотрите на это http://jsfiddle.net/mplungjan/V5Qca/

<script>
function linkify(id,URL) {
  var container = document.getElementById(id);
  var links = container.getElementsByTagName("a");
  if (links.length ==0) {
    container.innerHTML=container.innerHTML.link(URL);
    return;
  }
  var nodes = container.childNodes;
  for (var i=nodes.length-1;i>=0;--i) {
    if (nodes[i].nodeType ==3 && nodes[i].parentNode.nodeName!="A") {
      var link = document.createElement("a");
      link.href=URL;
      link.innerHTML=nodes[i].nodeValue;
      container.replaceChild(link, nodes[i]);
    }
  }
}
window.onload=function() {
  linkify("div1","http://www.google.com/");
}
</script>
<div id="div1">
this is a <a href="test">test</a> of replacing text with links with <a href="#">linkified</a> content
</div>  
...