我试图在使用一些例程和外部服务(akismet)发布之前过滤掉垃圾邮件,但是当推入逗号分隔的单词或由空标签组成的单词时,它们似乎都失败了。例如
b[u][/u]u[u][/u]y[i][/i]m[b][/b] e <-> buyme
b,u,y,m,e <-> 买我
有谁知道一个好的 ColdFusion 正则表达式可以在我将其发布到 aksimet 进行处理之前去除这种行为?
我试图在使用一些例程和外部服务(akismet)发布之前过滤掉垃圾邮件,但是当推入逗号分隔的单词或由空标签组成的单词时,它们似乎都失败了。例如
b[u][/u]u[u][/u]y[i][/i]m[b][/b] e <-> buyme
b,u,y,m,e <-> 买我
有谁知道一个好的 ColdFusion 正则表达式可以在我将其发布到 aksimet 进行处理之前去除这种行为?
首先:您是否检查过 Akismet 是否还没有这样做?
我非常怀疑它已经完成了所有这些处理(以及更多),所以你实际上不需要。
无论如何,假设这是 bbcode,因此相关标签将为粗体/斜体/下划线,您可以将它们替换为:
TextForAkismet = rereplace( TextForAkismet , '\[([biu])\]\[/\1\]' , '' , 'all' )
如果您要删除其他空标签,只需根据需要更新捕获的组(括号中的位)。为了同时满足潜在的属性(但仍然是一个空标签),一种快速而肮脏的方法是[^\]]*
在标签名称之后使用(在捕获的组之外)。
'\[([biu]|img|url)[^\]]*\]\[/\1\]'
根据您使用的 bbcode 方言,您可能需要处理需要更复杂表达式的带引号的括号。
要删除出现在字母之间的逗号,请使用:
TextForAkismet = rereplace( TextForAkismet , '\b,\b' , '' , 'all' )
(其中\b
匹配字母数字和非字母数字之间的任何位置。)