2016-04-21 47 views
0

我必須在正則表達式中挑戰。coldfusion:正則表達式匹配單詞並替換和更改鏈接

  • 問題:1

我怎麼能代替href="http://myserver.com"如果我的HTML [點擊這裏]。例如: <a target="_blank" href="http://myserver.com" style="text-decoration: none; color: #fff;">Click here</a>

替換爲

<a target="_blank" href="##" style="text-decoration: none; color: #fff;">Click here</a>

  • 問題:2

在我的HTML我要搜索的關鍵字**^^ mytag **,並用替換值。 目前即時在循環中逐一替換。

目前代碼: #replace(MYHTMLcontent,"^mytag^","Name","All")#

有沒有,如果我可以搜索我的所有HTML的關鍵字這是在我的情況有點像^keyword^,並添加添加結構的方式。

感謝

編輯:我添加新的代碼什麼IM即時通訊上堅持工作,如果某些人能幫助我。它正在替換我的HTML中的所有鏈接。

<cffunction name="htmlurl" returntype="any" > 
    <cfargument name="aHTMLTemplate" required="yes" type="any" default=""> 
    <cfargument name="addr" required="yes" type="any" default="http://url.com"> <!--- OR ## ---> 
    <cfset regex = createObject("java", "java.util.regex.Pattern").compile('href=\"[^\"]+\"')> 
    <cfset result = createObject("java", "java.lang.StringBuilder").init()> 
    <cfset var htmlcont  = arguments.aHTMLTemplate /> 
    <cfset var toReplaceURL = arguments.avolurladdr /> 


    <cfset matcher = regex.matcher(htmlcont)> 
    <cfset last  = 0> 

    <cfloop condition="matcher.find()"> 
     <cfset result.append(
      htmlcont.substring(
       last, 
       matcher.start() 
      ) 
     )> 
    <cfset token = matcher.group(
      javaCast("int", (matcher.groupCount() gte 1 ? 1 : 0)) 
     )> 

      <cfset token = ("<a href='"& toReplaceURL & "'")> 

     <cfset result.append(token)> 

     <cfset last = matcher.end()> 
    </cfloop> 
    <cfset result.append(htmlcont.substring(last))> 
    <cfset result = result.toString()> 
    <cfreturn result> 
    </cffunction> 
+2

我看不出任何問題。 –

+0

我看到兩個問題。 (好像帖子已被編輯過。) – jkdev

回答

1

那麼,我對Coldfusion一無所知。但是,使用純Java,你可以做這樣的事情:

問題1:

String replaced = ""; 
if(element.matches("<a [^>]+>Click here</a>") { 
    replaced = element.replaceAll("href=\"[^\"]+\"", "href=\"##\""); 
} 

正則表達式檢查,如果給定的字符串是點擊此處鏈接。然後,它用##替換href的「...」之間的所有內容。

問題2:

String replaced = element.replaceAll("\^[^\^]+\^", "NAME"); 

正則表達式檢查,如果那裏有一些東西^ ^任何地方和替換的名字。如果你對regex不熟悉:[和]之間的部分匹配任何不是^的內容。雖然看起來很有趣。

我希望這個答案能幫到你。

1

功能:

<cffunction name="tmurlReplace" returntype="any" > 
<cfargument name="HTMLCont" required="yes" type="any" default=""> 
    <cfargument name="toreplaceURL" required="no" type="any" default="http://YOurURL.com"> 
    <cfset var ehtml = arguments.HTMLCont> 
    <cfif refind("<a [^>]+>click here</a>",ehtml,1)> 
     <cfset ehtml = REReplace(ehtml, 'href=\"[^\"]+\"', "href='#toReplaceURL#'", "ALL") > 
    </cfif> 
    <cfreturn ehtml> 
    </cffunction> 

函數調用:

`tmurlReplace(HTMLCont=MyHTMLCode)` 

希望這將有助於