2010-02-28 59 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