我最近在ReReplace()函数中开始使用以下RegEx来使用ColdFusion从字符串中剥离HTML标记。 请注意:我没有使用它作为XSS或SQL注入的保护; 这只是为了从字符串中删除现有的和安全的HTML,然后才显示在HTML标题属性中。
REReplaceNoCase(str,"<[^>]*>","","ALL")
在半相关问题I asked how to modify my RegEx中包含空格和换行符。有人告诉我,为此目的使用RegEx是不合适的this post was referenced as an explanation.
我强烈怀疑你发布的正则表达式实际上并不正常。我建议你不要使用正则表达式解析HTML,因为HTML不是常规语言。请改用HTML解析器。 (Mark Byers)
如果这是真的,在显示之前从字符串中删除HTML的适当工具是什么? (请记住HTML已经安全;它在进入数据库之前已经过清理。)
我知道HTMLEditFormat()和HTMLCodeFormat(),但这两个功能并不能满足我的需要;早期用特定于HTML转义的等价物替换特殊字符,而后者则完全相同,但也将字符串换成<pre>
标记。
我想要做的是在HTML标题属性<a title="My string without HTML goes here">...</a>
有时候HTML不是必需的。例如,假设您想显示帖子的摘录,而不存储HTML。
答案 0 :(得分:5)
我不同意你引用的推理。虽然HTML不应该使用regexen 解析,但剥离标签对他们来说是完美的。
但是你会比<[^>]*>
更加小心,因为那会转向
<span title=">">...</span>
进入不正常的
">...</span>
所以你需要<([^">]|"[^"]*"|'[^']*')*>
之类的东西。您可以使用字符替换而不是正则表达式来删除换行符,但如果您更喜欢正则表达式,则可以使用类似\n
的内容(或者甚至使用替换方法将其与上面的内容结合使用,但效率更低)。
答案 1 :(得分:1)
使用chilkat html解析器chilkat。我们在学术项目中使用它来从html页面获取所有内容和超链接,以构建基本的搜索引擎。
答案 2 :(得分:1)