Big Al Ruby Newbie
Big Al Ruby Newbie

Reputation: 834

Parse HTML stored as string in Database in ColdFusion

I have taken over this ColdFusion project and found that I need a value out of a database field that includes HTML. The field data looks like this (without the new lines):

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

I am wanting to use this data but I only need the text between the:

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

I used a function that ColdFusion has to remove HTML:

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

But when I use that, I get something like this:

3 Nights' Lodging3 Noches alojamiento

All I want is:

3 Nights' Lodging

Upvotes: 3

Views: 746

Answers (1)

Leigh
Leigh

Reputation: 28873

Examining the beginning of the string, ie <wddxPacket ...> it is actually WDDX.

If you do a search for ColdFusion + WDDX you will find the documentation for CFWDDX. It is a built in tag which supports conversions of WDDX strings to CFML objects (and vice versa) for easier manipulation. In your case use action="wddx2cfml" to convert the string back into a CF structure.

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

Then use the key #result.en# to grab the string you want.

Upvotes: 6

Related Questions