2016-05-27 12 views
3

Ich habe dieses ColdFusion-Projekt übernommen und festgestellt, dass ich einen Wert aus einem Datenbankfeld, das HTML enthält. Die Felddaten wie folgt aussehen (ohne die neuen Linien):Parse HTML gespeichert als Zeichenfolge in der Datenbank in ColdFusion

<wddxPacket version="1.0"> 
    <header /> 
    <data> 
     <struct> 
      <var name="en"> 
       <string>3 Nights' Lodging</string> 
      </var> 
      <var name="sp"> 
       <string>3 Noches alojamiento</string> 
      </var> 
     </struct> 
    </data> 
</wddxPacket> 

Ich wünsche, diese Daten zu verwenden, aber ich brauche nur den Text zwischen dem:

<var name='en'><string>3 Nights' Lodging</string></var>

habe ich eine Funktion, Coldfusion hat HTML zu entfernen:

#REReplaceNoCase(pkg.title, "<[^><]*>", '', 'ALL')# 

Aber wenn ich, dass ich so etwas wie dieses:

3 Nights' Lodging3 Noches alojamiento 

Alles, was ich will, ist:

3 Nights' Lodging 

Antwort

6

den Anfang der Zeichenfolge Untersuchen, dh <wddxPacket ...> es ist eigentlich WDDX.

Wenn Sie nach ColdFusion + WDDX suchen, finden Sie die Dokumentation für . Es ist ein eingebauter Tag, der die Konvertierung von WDDX-Strings in CFML-Objekte (und umgekehrt) zur einfacheren Handhabung unterstützt. In Ihrem Fall verwenden Sie action="wddx2cfml", um die Zeichenfolge zurück in eine CF-Struktur zu konvertieren.

<cfwddx action="wddx2cfml" input="#text#" output="result"> 
<cfdump var="#result#" label="Raw object"> 

Dann den Schlüssel #result.en# verwenden, um die Zeichenfolge, die Sie wollen greifen.