提取由HTML标签Coldfusion包围的子字符串

时间:2012-08-01 20:36:52

标签: string coldfusion substring extraction

我可能有一个愚蠢的问题。假设我们有一个字符串:

"my name <em>is</em> Tom <em>Papas</em> and I am 30 <em>years</em> of age<em>!</em>"

问题是:我们如何提取<em>标签中包含的子串并使用coldfusion将它们作为列表,数组或逗号分隔的字符串输出?请注意,我们不知道标记中包含哪些子字符串。我们需要盲目地提取子串。

提前谢谢你,

汤姆

希腊

2 个答案:

答案 0 :(得分:2)

下载jsoup并将jar放入CF的lib文件夹

html = "my name <em>is</em> Tom <em>Papas</em> and I am 30 <em>years</em> of age<em>!</em>";

dom = createObject("java", "org.jsoup.Jsoup").parse(html);
emElements = dom.getElementsByTag("em");

results = [];
for (em in emElements)
    arrayAppend(results, em.text());

了解更多信息:http://www.bennadel.com/blog/2358-Parsing-Traversing-And-Mutating-HTML-With-ColdFusion-And-jSoup.htm

或使用基本正则表达式

matches = rematch("<em>[^<]*</em>", html);
results = [];
for (match in matches)
    arrayAppend(results, rereplace(match, "<em>(.*)</em>", "\1") ); 

答案 1 :(得分:1)

在CF 10或Railo 4中,您可以将xmlParse()与Underscore.cfc的map()函数结合使用,如下所示:

str = "my name <em>is</em> Tom <em>Papas</em> and I am 30 <em>years</em> of age<em>!</em>";
str = "<myWrapper>" & str & "</myWrapper>";
xmlObj = XmlParse(str);
resultAsArray = _.map(xmlObj.myWrapper.xmlChildren, function (val) {
    return val.xmlText;
});

(免责声明:我写过Underscore.cfc)