gpt4 book ai didi

regex - 如何从 ColdFusion 字符串中清除 HTML 标签?

转载 作者:行者123 更新时间:2023-12-04 01:30:05 25 4
gpt4 key购买 nike

我正在寻找一种从 ColdFusion 字符串中解析 HTML 标签的快速方法。我们正在引入一个 RSS 提要,它可能包含任何内容。然后我们对信息进行一些处理,然后将其吐回到另一个地方。目前我们正在使用正则表达式执行此操作。有没有更好的方法来做到这一点?

<cfloop from="1" to="#ArrayLen(myFeed.item)#" index="i">
<cfset myFeed.item[i].description.value =
REReplaceNoCase(myFeed.item[i].description.value, '<(.|\n)*?>', '', 'ALL')>
</cfloop>

我们正在使用 ColdFusion 8。

最佳答案

免责声明 我强烈提倡使用适当的解析器(而不是正则表达式)来解析 HTML。然而,这个问题不是关于解析 HTML,而是关于销毁它。对于超出此范围的所有任务,请使用解析器。

我认为你的正则表达式很好。只要从输入中删除所有 HTML 标签,使用像您这样的正则表达式是安全的。

其他任何事情都可能比它的值(value)更麻烦,但是您可以编写一个小函数,该函数循环遍历字符串 char-by-char 一次并删除标记括号内的所有内容 - 例如:

  • 一旦遇到“< ”字符,
  • 就打开“inTag”标志
  • 遇到“>
  • 后立即将其关闭
  • 只要标志关闭,就将字符复制到输出字符串
  • 为了提高性能,请使用 StringBuilder Java 对象而不是字符串连接

  • 对于应用程序的高需求部分,这可能比正则表达式更快。但是正则表达式是干净的并且可能足够快。

    也许这个修改后的正则表达式对你有一些好处:
    <[^>]*(?:>|$)
  • 捕获字符串末尾的未闭合标签
  • [^>]*优于(.|\n)
  • REReplaceNoCase()的使用当模式中没有实际字母时是不必要的。不区分大小写的正则表达式匹配比区分大小写慢。

    关于regex - 如何从 ColdFusion 字符串中清除 HTML 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/970817/

    25 4 0