ColdFusion RegEx Замена тегов в строке - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь заменить фактические начальные / конечные теги в строке.Например, я хочу заменить

<p class="style4">My Title Is This<p>
с
<h2>My Title Is This</h2>
Я написал код ниже, который, кажется, правильно находит теги в моей строке, но он заменяет его на <h2>(.+?)</h2><br/><br/> <pre><cfset this.text2 = ReReplaceNoCase(getThis.statictext, &#39;<p[^>]+class="style4"[^>]*>(.+?)</p>&#39;, &#39;<h2>(.+?)</h2>&#39;, "ALL")>Кто-нибудь может сказать мне, что мне здесь не хватает?Спасибо

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Вместо этого: '<h2>(.+?)</h2>' вы захотите использовать обратную ссылку \1 для ссылки на подвыражение (.+?):

<cfset this.text2 = ReReplaceNoCase(getThis.statictext, '<p\s[^>]+class="style4"[^>]*>(.+?)</p>', '<h2>\1</h2>', "ALL")>

Надеюсь, это поможет.

ОБНОВЛЕНИЕ : отредактировано согласно предложению Майка Козера ниже.

0 голосов
/ 21 марта 2012

Это находит все теги и просто удаляет их, вы можете легко изменить это, чтобы сделать замену.

<!--- 
# STRIPTAGS
# Strip all html tags from a string 
# Receive string and return string with any and all tags striped out
--->
<cffunction name="stripTags" access="public" output="false" returntype="string" hint="Remove all HTML tags from string">
    <cfargument name="string" type="any" required="true"  hint="String to clean"/>
    <cfset var pattern = "<[^>]*>">
    <cfreturn REReplaceNoCase(arguments.string, pattern, "" , "ALL")>
</cffunction>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...