2016-04-21 68 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)` 

希望这将有助于