2010-02-28 66 views
0

我期待实现一个系统从用户发布的文本中去除网址。阻止用户发布网址的最佳方法

我知道有没有完美的解决方案和用户仍将尝试之类的东西:

www点谷歌科网

,所以我知道,最终的任何解决方案都会以某种方式存在缺陷......所有我我希望做的事情是减少做这件事的人数。

任何建议,来源或方法appriciated,

感谢

+0

请确保而不是去掉文字,让用户知道您检测到网站的外观,并指出您指的是什么代码段。我的文本过滤没有警告和非常模糊的警告让我非常恼火,作为一个用户。 – Matchu 2010-02-28 20:52:39

回答

1

有一些正则表达式模式匹配器here。其中一些非常复杂。 我建议运行多个可能是一个好主意。

+0

哇...真的很棒的网站...我永远不会对正则表达式感到满意。我想我会用这个: ([\ d \ w - 。] +?\。(a [cdefgilmnoqrstuwz] | b [abdefghijmnorstvwyz] | c [acdfghiklmnoruvxyz] | d [ejkmnoz] | e [ceghrst] | f [ijkmnor] | G [abdefghilmnpqrstuwy] | H [kmnrtu] | I [delmnoqrst] | f] [EMOP] | K [eghimnprwyz] | L [abcikrstuvy] | M [acdghklmnopqrstuvwxyz] | N [acefgilopruz] | OM | p [aefghklmnrstwy] | QA | R [eouw] | S [abcdeghijklmnortuvyz] | T [cdfghjkmnoprtvwz] | U [augkmsyz] | v [aceginu] | W [FS] | Y [ETU] | Z [AMW] |航空| ARPA | BIZ | COM |鸡舍| EDU |信息| INT | GOV |密耳|博物馆|名称|净|有机|亲)(\ C | \ W(<&|?!=)?!(\ \ S |。\ {3} )。(* s))(\ s | $) – Mark 2010-02-28 20:36:45

+0

如果其他人正在寻找这样的正则表达式,您可以使用此链接测试 http://www.regexlib.com/RETester.aspx?regexp_id=1016 – Mark 2010-02-28 20:37:40

0

你需要正是你想要去掉什么定义。定义越严格,您获得的误报越多。下面的例子将除去任何字符串3个字符,接着是周期,多个字母,另一个周期和2-4多个字母:

$text = preg_replace('/[a-z]{3}\.[a-z]+\.[a-z]{2,4}/i', '', $text); 

严格的另一端可能是任何东西上的周期和2重圆-4字母(如.com):

$text = preg_replace('/[a-z]+\.[a-z]{2,4}/i', '', $text); 

注意,如果有人忘记添加一个空格其间句子后者将去掉句子的最后一个字,句号和下一句的第一个字。

+1

嗯不是很好,如果它碰巧是与编程有关的内容(OP确认与否),因为你可能最终将摆脱命名空间,程序包层次结构等...... – 2010-02-28 20:09:16

+0

它与编程无关...但是谢谢 – Mark 2010-02-28 20:14:59