我最近在ReReplace()函数中开始使用以下RegEx来使用ColdFusion从字符串中剥离HTML标记.请注意:我没有使用它作为XSS或SQL注入的保护; 这只是为了在HTML标题属性中显示之前从字符串中删除现有的和安全的HTML.
REReplaceNoCase(str,"<[^>]*>","","ALL")
Run Code Online (Sandbox Code Playgroud)
在一个半相关的问题中,我问过如何修改我的RegEx以包含空格和换行符.有人告诉我,为此目的使用RegEx是不合适的,这篇文章被引用作为解释.
我强烈怀疑你发布的正则表达式实际上并不正常.我建议你不要使用正则表达式解析HTML,因为HTML不是常规语言.请改用HTML解析器.(Mark Byers)
如果这是真的,那么在字符串显示之前从字符串中删除HTML的适当工具是什么?(请记住HTML已经安全;它在进入数据库之前已经过清理).
我知道HTMLEditFormat()和HTMLCodeFormat(),但这两个函数不能提供我需要的东西; 早期使用HTML转义的等价物替换特殊字符,而后者完全相同,但也将字符串包装为<pre>标记.
我想要做的是在HTML标题属性中显示之前从HTML和换行符中清除一个字符串 <a title="My string without HTML goes here">...</a>
有时候HTML不是必需的.例如,假设您想显示帖子的摘录,而不会将HTML与其一起存储.
我不同意你引用的推理.虽然HTML不应该使用regexen 进行解析,但剥离标记对于它们来说是完美的.
但是你会想要更加小心<[^>]*>,因为那会转变
<span title=">">...</span>
Run Code Online (Sandbox Code Playgroud)
进入不良形态
">...</span>
Run Code Online (Sandbox Code Playgroud)
所以你需要这样的东西<([^">]|"[^"]*"|'[^']*')*>.您可以使用字符替换而不是正则表达式来删除换行符,但是如果您更喜欢正则表达式,则可以使用类似的东西\n(或者甚至使用交替使用上面的内容,但效率更低).