【问题标题】:Find & replace script for User to alter hyperlinks via Website查找和替换用户通过网站更改超链接的脚本
【发布时间】:2013-08-04 17:08:50
【问题描述】:

我有一个网页上的超链接列表,我希望允许用户执行查找和替换命令,该命令将立即更改所有超链接并生成一个自定义列表,他们可以复制并粘贴到其他地方。

例子:

google.com/search?q=search+phrase&pws=0

google.com/search?tbm=blg&q=search+phrase&pws=0

对于以上两个 URL(假设它们是超链接的),用户可以执行查找和替换,找到“search+phrase”并将其替换为“custom+search+new”以呈现以下新的超链接 URL:

google.com/search?q=custom+search+new&pws=0

google.com/search?tbm=blg&q=custom+search+new&pws=0

它可以是http://htmlsandbox.comhttp://textmechanic.co/Find-and-Replace-Text.html 的组合

【问题讨论】:

  • 它们是在文本字段中还是实际链接 (<a href="blah"></a>)?
  • 我希望它们最终成为实际链接。我为查找和替换命令设想了一个文本字段,它在新的 html 框架中呈现新链接,就像 htmlsandbox.com 和 textmechanic.com/Find-and-Replace-Text.html 的组合。但我愿意接受最简单的方法(并且服务器负载最少)。

标签: replace


【解决方案1】:

您可以使用正则表达式和 JavaScript 或 Jquery。

由于您没有标记JavascriptJQuery,因此这里是一个使用jQuery 的示例(认为它可以很容易地替换为Javascript)。

function replaceCustomSearch (custom) {
    var patt = /q=[\w\d\+]+/;
    $('a[href]').each(function(){
        var $this = $(this),
            href = $this.attr('href');
        if (patt.test(href)) {
            href = href.replace(patt.exec(href), "q=" + custom);
            $this.attr('href', href);
        }
    });
}

小提琴:http://jsfiddle.net/UP8x5/

【讨论】:

  • 这看起来很棒。不幸的是,我太无知了,不知道如何处理该代码,如何将其绑定到用户输入文本字段等。恐怕我需要有关如何使其在 wordpress 页面中运行的说明。对不起,我是新手!
【解决方案2】:

您的问题并不清楚这是用于何处。正如您所说的必须在客户端进行更改(并且不要在服务器端提及任何内容),仅使用客户端编程语言来执行此操作是有意义的。在浏览器中,javascript 将是一个合乎逻辑的解决方案。当您要做更复杂的事情时,您可能想要查看诸如jQuery 之类的库。现在我将用纯 javascript 提供这两种解决方案,因为这太简单了,无法加载完整的库。

替换文本字段中的文本

如果您正在制作类似编辑器的东西,您可能会在文本字段中查找和替换某些内容。

function doReplace() {
  var s = document.getElementById('search').value;
  var r = document.getElementById('replace').value;

  var oldtext = document.getElementById('mytext').innerHTML;
  var newtext = oldtext.replace( s, r );

  document.getElementById('mytext').innerHTML = newtext;
}

这在字符串上使用replace-methodThis 是个小问题。

替换实际链接中的文字

var $a = document.getElementsByTagName('a');
var search = "asdf";
var replace = "qwer";

for( var i = 0; i < $a.length; i++ ) {
    $a[i].href = $a[i].href.replace( '/' + search + '/g', replace );
}

工作小提琴here。它使用正则表达式和getElementsByTagName

【讨论】:

  • 是的,仅限客户端:我有一个包含 20 个谷歌搜索链接的列表,我希望客户端能够通过单个搜索和替换命令来更改这些链接。我希望结果是客户可以点击的实际超链接。我还需要有关在何处放置此代码的说明。再次抱歉,我是新手。
  • 我比平时更彻底。在 StackOverflow 上,您至少需要对问题有基本的了解。如果您不知道 JavaScript 是什么,请在 Google 上搜索。如果您不知道如何使用 JavaScript,请 google 一下。如果您不确定这些 sn-ps 代码的作用,请转到 mdn 并研究函数的作用、它作为参数的内容以及返回的内容。这是非常直接的代码。
  • 谢谢。我弄乱了小提琴中的代码以获得我想要的东西。我会弄清楚如何实现它。
  • 所以我快到了,并且学到了很多东西。我修改过的小提琴:jsfiddle.net/H4FYj/ 问题:搜索和替换只做第一个链接,而不是第二个。我希望它执行我列出的尽可能多的链接。另外,如果用户输入一个短语,我希望替换工具自动用 URL 中的“+”替换单词之间的空格。可能吗?
猜你喜欢
  • 1970-01-01
  • 2021-10-19
  • 2013-07-12
  • 2021-11-03
  • 2011-09-19
  • 1970-01-01
  • 2014-01-11
  • 2011-03-10
  • 1970-01-01
相关资源
最近更新 更多