1

我试图在使用一些例程和外部服务(akismet)发布之前过滤掉垃圾邮件,但是当推入逗号分隔的单词或由空标签组成的单词时,它们似乎都失败了。例如

b[u][/u]u[u][/u]y[i][/i]m[b][/b] e <-> buyme

b,u,y,m,e <-> 买我

有谁知道一个好的 ColdFusion 正则表达式可以在我将其发布到 aksimet 进行处理之前去除这种行为?

4

1 回答 1

0

首先:您是否检查过 Akismet 是否还没有这样做?

我非常怀疑它已经完成了所有这些处理(以及更多),所以你实际上不需要。


无论如何,假设这是 bbcode,因此相关标签将为粗体/斜体/下划线,您可以将它们替换为:

TextForAkismet = rereplace( TextForAkismet , '\[([biu])\]\[/\1\]' , '' , 'all' )

如果您要删除其他空标签,只需根据需要更新捕获的组(括号中的位)。为了同时满足潜在的属性(但仍然是一个空标签),一种快速而肮脏的方法是[^\]]*在标签名称之后使用(在捕获的组之外)。

'\[([biu]|img|url)[^\]]*\]\[/\1\]'

根据您使用的 bbcode 方言,您可能需要处理需要更复杂表达式的带引号的括号。


要删除出现在字母之间的逗号,请使用:

TextForAkismet = rereplace( TextForAkismet , '\b,\b' , '' , 'all' )

(其中\b匹配字母数字和非字母数字之间的任何位置。)

于 2013-08-21T12:54:30.603 回答