2012-03-13 61 views
-1

目前我正在停止我的用戶通過這樣使用某些詞:PHP聰明的腳本停止網站的廣告

$badsite = array ("website1", "website2") 
$countsite = count($badsite); 
for ($var = 0; $var < $countsite; $var++) 
{ 
$tekst = eregi_replace($badsite[$var], 'Word Forbidden', $tekst); 
} 
return $tekst; 
} 

所以,如果他們鍵入將與「字紫禁城被替換的單詞之一」。

但他們通過留下空格或符號或bb代碼繞過它。 有人會知道我可以阻止嗎?

+0

增加不良詞語使用符號/空格.... – ManseUK 2012-03-13 10:44:52

+1

我相信它對你沒有好處。我可以寫「seks」而不是「sex」或寫「s * e * k * s」或任何我想要的。更好的方法是同行評審和業績統計... – 2012-03-13 10:46:01

+0

但是一些BB代碼中有字母? – 2012-03-13 10:46:42

回答

0

eregi functions have been deprecated你最好不要使用它們,如果你確實使用它們,至少在第一個參數中傳遞正則表達式而不是字符串。

不確定的計數循環的目的 - 我猜javascript是你的主要語言:)。如果您寫一個循環就用:

foreach($badsite as $value) { 
    // $value is "website1"; 
} 

你可以使用這樣的代碼:

$patterns = '/\b(website1|website2|forbidden\s+fruits?)\b/i'; 
$cleaned = preg_replace($patterns, '****', $input); 

上述模式將取代:

 
* website1 
* wEbSiTe1 
* website2 
* wEbSiTe2 
* forbidden fruits 
* forbiDDen  fruits 
* forbidDen fruit 
* etc. 

使用正則表達式中的一個迴路是相當浪費 - 使用管道(|)並連接多個模式。

+0

這部分是什麼?禁止\ s +水果?/ i – 2012-03-13 10:53:22

+0

@DareHam哦,親愛的 - 這是一個示例正則表達式 - 描述要替換的模式。 – AD7six 2012-03-13 10:55:38

+0

循環,以防萬一他們不只是在同一頁上的一個。 – 2012-03-13 10:56:36