2016-05-27 5 views
3

Я принял этот проект ColdFusion и обнаружил, что мне нужно значение из поля базы данных, которое включает HTML. Поле данные выглядят следующим образом (без новых линий):Анализ HTML, хранящийся в виде строки в базе данных в 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> 

Я хотел использовать эти данные, но мне нужен только текст между:

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

Я использовал функцию, ColdFusion должен удалить HTML:

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

Но когда я использую это, я получаю что-то вроде этого:

3 Nights' Lodging3 Noches alojamiento 

Все, что я хочу это:

3 Nights' Lodging 

ответ

6

Рассматривая начало строки, т.е. <wddxPacket ...> это на самом деле WDDX.

Если вы выполните поиск ColdFusion + WDDX, вы найдете документацию для CFWDDX. Это встроенный тег, который поддерживает преобразования строк WDDX в объекты CFML (и наоборот) для упрощения манипуляций. В вашем случае используйте action="wddx2cfml", чтобы преобразовать строку обратно в структуру CF.

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

Затем используйте ключ #result.en#, чтобы захватить строку, которую вы хотите.

 Смежные вопросы

  • Нет связанных вопросов^_^