我正在使用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。
答案 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>