替换body标签内所有href中的url

时间:2013-11-23 23:03:23

标签: coldfusion cfhttp

我正在使用cfhttp来获取一个网站。我想替换body标签内的所有链接。重要的是,我不想弄乱头脑中的样式表等。

我想做以下事情:

在外部网页正文中,我们可能会找到一个链接:

<a href="http://www.externallink.com">External Link</a>

我想用以下内容替换它:

<a href="http://www.mydomain.com?url=http://www.externallink.com">External Link</a>

使用Replace()很容易,但我也替换了所有链接的样式表等。我只想编辑可点击链接的href。

1 个答案:

答案 0 :(得分:0)

我修改了HTML文档的DOM,使用jsoup库将跟踪参数添加到出站电子邮件中的链接。 (jsoup是一个开源的Java HTML Parser,可以在http://jsoup.org/下载。)你会注意到它使用类似jQuery的select方法,但是所有的操作都在服务器端执行(我也用过)它用于从CFHTTTP获取的HTML中删除广告。)

以下是工作ColdFusion代码的快速示例,它将完全按照您的要求在服务器端执行:

<CFSET TheHTML = CFHTTP.FileContent>
<CFSET jsoup = CreateObject("java", "org.jsoup.Jsoup")>
<CFSET TempHTML = jsoup.parse(TheHTML)>
<CFLOOP ARRAY="#TempHTML.select('a')#" INDEX="ThisLink">
    <CFSET TheLink = thisLink.attr("href").toString()>
    <CFSET TheHTML = replace(TheHTML, TheLink, "http://mywebsite.com/?u=" & URLEncodedFormat(TheLink))>
</CFLOOP>