PHP Clever脚本停止网站广告

时间:2012-03-13 10:43:40

标签: php replace

目前,我正在阻止我的用户使用某些字词:

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

因此,如果他们输入其中一个词,它将被替换为“Word Forbidden”。

但是他们通过留下空格或符号或bb代码来绕过它。 有谁知道我怎么能阻止这个?

2 个答案:

答案 0 :(得分:0)

您正在使用eregi_replace但未通过regular expressions。这是你军备竞赛的下一步。

答案 1 :(得分:0)

eregi functions have been deprecated你最好不要使用它们,如果你使用它们至少在第一个arg中传递正则表达式而不是字符串。

不确定count-for-loop的目的 - 我猜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.

在循环中使用正则表达式非常浪费 - 使用管道(|)并连接多个模式。