我可能有一个愚蠢的问题。假设我们有一个字符串:
"my name <em>is</em> Tom <em>Papas</em> and I am 30 <em>years</em> of age<em>!</em>"
问题是:我们如何提取包含在<em>
标签中的子字符串并使用coldfusion将它们输出为列表、数组或逗号分隔的字符串?请注意,我们不知道标签中包含哪些子字符串。我们需要盲目地提取子串。
先感谢您,
汤姆
希腊
我可能有一个愚蠢的问题。假设我们有一个字符串:
"my name <em>is</em> Tom <em>Papas</em> and I am 30 <em>years</em> of age<em>!</em>"
问题是:我们如何提取包含在<em>
标签中的子字符串并使用coldfusion将它们输出为列表、数组或逗号分隔的字符串?请注意,我们不知道标签中包含哪些子字符串。我们需要盲目地提取子串。
先感谢您,
汤姆
希腊
下载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());
或使用基本的正则表达式
matches = rematch("<em>[^<]*</em>", html);
results = [];
for (match in matches)
arrayAppend(results, rereplace(match, "<em>(.*)</em>", "\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)