gpt4 book ai didi

regex - 从字符串中删除 HTML 的最佳方法是什么?

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

我最近开始在 ReReplace() 函数中使用以下 RegEx,使用 ColdFusion 从字符串中去除 HTML 标签。 请注意:我没有使用它来防止 XSS 或 SQL 注入(inject);这只是为了在字符串显示在 HTML 标题属性中之前从字符串中删除现有的安全 HTML。

REReplaceNoCase(str,"<[^>]*>","","ALL")

在半相关问题中 I asked how to modify my RegEx包括空格和换行符。我被告知为此目的使用 RegEx 是不合适的并且 this post was referenced as an explanation.

I strongly suspect though that the regular expressions you have posted don't in fact work correctly. I'd advise you not to use regular expressions to parse HTML as HTML is not a regular language. Use an HTML parser instead. (Mark Byers)

如果这是真的,那么在显示字符串之前从字符串中删除 HTML 的合适工具是什么? (记住 HTML 已经是安全的;它在进入数据库之前已经过清理)。

我知道 HTMLEditFormat()HTMLCodeFormat() ,但是这两个功能并没有提供我所需要的;较早的将特殊字符替换为 HTML 转义的等效字符,而后者的作用完全相同,但还将字符串 a <pre> 包装起来。标签。

我想做的是在我显示在 HTML 标题属性中之前清除 HTML 中的字符串和换行符 <a title="My string without HTML goes here">...</a>

有时 HTML 不是必需的。例如,假设您想显示一篇文章的摘录,但没有存储 HTML。

最佳答案

我不同意你引用的推理。虽然 HTML 不应使用正则表达式解析,但剥离标签非常适合它们。

但你需要比 <[^>]*> 更加小心, 因为那会变成

<span title=">">...</span>

进入病态

">...</span>

所以你需要类似 <([^">]|"[^"]*"|'[^']*')*> 的东西反而。您可以使用字符替换而不是正则表达式去除换行符,但如果您更喜欢正则表达式,则可以使用类似 \n 的东西。 (或者甚至使用交替将其与上述组合,但效率更低)。

关于regex - 从字符串中删除 HTML 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4550583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com