2013-11-23 40 views
0

我正在使用cfhttp獲取網站。我想要替換body標籤內的所有鏈接。重要的是,我不想弄亂頭腦中的樣式表等。在身體標記內的所有hrefs中替換url

我要做到以下幾點:

在外部網頁身上我們可以找到一個鏈接:

<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

歡迎#1。爲了讓你的代碼看起來像代碼,在它前面放4個空格。 –

+0

你能發佈你想替換的HTML代碼的一小段代碼嗎? – BKK

+2

使用jQuery類似'$(「a」)。attr(「href」,「http:// new address」);' –

回答

0

我已經修改了一個HTML文檔的DOM,使用jsoup庫向出站電子郵件中的鏈接添加跟蹤參數。 (jsoup是一個開源的Java HTML解析器,可以在http://jsoup.org/下載。)你會注意到它使用類似jQuery的選擇方法,但所有的操作都是在服務器端執行的(我也用它來移除廣告從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>