coldfusion :正则表达式匹配单词并替换和更改 link
coldfusion : Regex to match words and replace & change link
我必须挑战正则表达式。
- 问题: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^
并添加到添加结构中。
谢谢
已编辑:添加我的新代码,如果有人可以帮助我,我正在做的事情就会卡住。它正在替换我 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>
嗯,我对 Coldfusion 一无所知。但是使用纯 Java,你可以这样做:
问题一:
String replaced = "";
if(element.matches("<a [^>]+>Click here</a>") {
replaced = element.replaceAll("href=\"[^\"]+\"", "href=\"##\"");
}
正则表达式检查给定的字符串是否为 link 并带有 Click here。然后,它将 href 的“...”之间的所有内容替换为##。
问题二:
String replaced = element.replaceAll("\^[^\^]+\^", "NAME");
正则表达式检查任何地方是否有 ^anything^ 并将其替换为 NAME。如果您不熟悉正则表达式:[ 和 ] 之间的部分匹配任何不是 ^ 的内容。不过看起来有点搞笑。
希望这个回答对您有所帮助。
函数:
<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)`
希望对你有帮助
我必须挑战正则表达式。
- 问题: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^
并添加到添加结构中。
谢谢
已编辑:添加我的新代码,如果有人可以帮助我,我正在做的事情就会卡住。它正在替换我 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>
嗯,我对 Coldfusion 一无所知。但是使用纯 Java,你可以这样做:
问题一:
String replaced = "";
if(element.matches("<a [^>]+>Click here</a>") {
replaced = element.replaceAll("href=\"[^\"]+\"", "href=\"##\"");
}
正则表达式检查给定的字符串是否为 link 并带有 Click here。然后,它将 href 的“...”之间的所有内容替换为##。
问题二:
String replaced = element.replaceAll("\^[^\^]+\^", "NAME");
正则表达式检查任何地方是否有 ^anything^ 并将其替换为 NAME。如果您不熟悉正则表达式:[ 和 ] 之间的部分匹配任何不是 ^ 的内容。不过看起来有点搞笑。
希望这个回答对您有所帮助。
函数:
<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)`
希望对你有帮助