2016-04-21 26 views
0

Ich habe Herausforderungen in Regex.Coldfusion: Regex, um Wörter zu entsprechen und ersetzen und ändern Sie den Link

  • FRAGE: 1

Wie kann ich ersetzen href="http://myserver.com" Wenn in meinem HTML [Hier klicken]. zum Beispiel: <a target="_blank" href="http://myserver.com" style="text-decoration: none; color: #fff;">Click here</a>

Ersetzen durch

<a target="_blank" href="##" style="text-decoration: none; color: #fff;">Click here</a>

  • FRAGE: 2

In My HTML i Schlüsselwort **^mytag^** und ersetzen Sie sie durch eine suchen Wert. zZ ersetzen ich eins nach dem anderen in der Schleife.

Aktuelle Code: #replace(MYHTMLcontent,"^mytag^","Name","All")#

Gibt es eine Möglichkeit, wenn ich meine alle HTML-Keywords suchen können, die wie ^keyword^ in meinem Fall etwas ist, und fügen Sie in hinzufügen in der Struktur.

Dank

EDITED: meine neuen Code, was im Hinzufügen auf im Arbeits stecken, wenn some-mir einer helfen kann. Es ersetzt alle Links in meinem 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

ich keine Frage sehen kann. –

+0

Ich sehe zwei Fragen. (Scheint, dass der Beitrag bearbeitet wurde.) – jkdev

Antwort

1

Nun, ich weiß nichts über Coldfusion. Aber mit reinem Java, könnten Sie so etwas tun:

Frage 1:

String replaced = ""; 
if(element.matches("<a [^>]+>Click here</a>") { 
    replaced = element.replaceAll("href=\"[^\"]+\"", "href=\"##\""); 
} 

Die regex prüft, ob der angegebene String ein Link mit einem Klick hier. Dann ersetzt es alles zwischen "..." von href mit ##.

Frage 2:

String replaced = element.replaceAll("\^[^\^]+\^", "NAME"); 

Die regex prüft, ob noch einige^alles^überall und ersetzt die durch den Namen. Wenn Sie mit Regex nicht vertraut sind: Der Teil zwischen [und] stimmt mit allem überein, was kein^ist. Sieht irgendwie lustig aus.

Ich hoffe, diese Antwort wird Ihnen helfen.

1

Funktion:

<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> 

Function Call:

`tmurlReplace(HTMLCont=MyHTMLCode)` 

hoffen, dass es helfen wird