删除href标记以及内容coldfusion

时间:2014-10-15 08:14:32

标签: regex coldfusion tags href

我们如何在coldfusion中删除带有完整链接的<a href标记?

我想从以下内容中删除"<a href="http://www.cnn.com">Harry Potter</a>"

This is some text. It is true that <a href="http://www.cnn.com">Harry Potter</a> is a good

我使用了正则表达式"<[aA].*?>.*?</[aA]>"

但它不起作用。

3 个答案:

答案 0 :(得分:1)

<[aA][^>]*>[^<>]*<\/[aA]>

试试这个。empty string

参见演示。

http://regex101.com/r/dZ1vT6/14

答案 1 :(得分:1)

VKS answer。它应该完美无缺。

---下面是我的劣势:) ---

这应该做你想要的。您可能遇到的唯一问题是链接标记的任何属性都包含&#34;&gt;&#34;。

<cfset mystring = 'This is some text. It is true that <a href="http://www.cnn.com\">Harry Potter</a> is a good, but <a href="gooogle_redirect.htm">Google</a> is better'>
<cfset mystring2 = ReplaceNoCase(mystring,"</a>","","ALL")>
<cfset MyReplace = ReReplaceNoCase(mystring2,"<a [^>]*>","","ALL")>

<cfoutput><pre>Original string: #mystring#

Without link: #myreplace#</pre></cfoutput>

替代方法:如果您要删除链接和链接的文本,而不仅仅是链接,这非常有用。这是我一直使用的肮脏的解决方法。我想也许其他语言可能会更清洁,但CF并不完全支持正则表达式。

找到您知道的字符,单个字符,不包含在任何链接文本中(<A...></A>之间)。我选择〜,但你可能需要找另一个。设置&#34;更近&#34;那个角色。

<cfset closer="~">
<cfset mystring = 'This is some text. It is true that <a href="http://www.cnn.com\">Harry Potter</a> is a good, but <a href="gooogle_redirect.htm">Google</a> is better'>
<cfset mystring2 = ReplaceNoCase(mystring,"</a>","#closer#","ALL")>
<cfset MyReplace = ReReplaceNoCase(mystring2,"<a [^>]*>([^#closer#]*)#closer#","","ALL")>

<cfoutput><pre>Original string: #mystring#

Without link: #myreplace#</pre></cfoutput>

这将取代

  

这是一些文字。确实Harry Potter是好的,但Google更好

  

这是一些文字。确实这是好的,但更好

如果您想要删除整个链接和文本,只需从上面的ReReplaceNoCase中取出\ 1.

答案 2 :(得分:0)

假设您要保留超链接之间的文本:

<cfsavecontent variable="content">
   This is some text. It is true that <a href="http://www.cnn.com">Harry Potter</a> is a good
</cfsavecontent>

<cfset content = reReplaceNoCase(content, "(<a.*?>)(.*?)(</a>)", "\2", "all") />
<cfoutput>#content#</cfoutput>

会导致:

  

这是一些文字。哈利波特确实很好。