目前,我正在阻止我的用户使用某些字词:
$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代码来绕过它。 有谁知道我怎么能阻止这个?
答案 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.
在循环中使用正则表达式非常浪费 - 使用管道(|)并连接多个模式。