我们如何在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]>"
但它不起作用。
答案 0 :(得分:1)
答案 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>
会导致:
这是一些文字。哈利波特确实很好。