在我的网站上,我有一个状态更新表单,用户填写该表单以最多160个字符更新其状态。到目前为止,在我的表单上有一些限制,例如:“用户无法发布> 160个字符,如果他添加> 160个字符,则会向他显示警告消息。”这一切都在为我
现在我想对用户输入添加限制,这意味着如果用户输入受限制的单词,则不会提交帖子,用户将看到错误消息。
限制词: Facebook , Twitter , Whatsapp , Mxit , Qeep 。
到目前为止,我只能在我的函数中添加一个单词,我想在上面添加所有上述单词,请帮助!感谢
<?php
$txt = $_POST['msg'];
if (strlen($txt) > 160) {
echo "Your post contains more then 160 chrecters";
$checking = substr($txt, 160);
echo "<del style='color:red;'>$checking</del>";
}
if (preg_match("/Facebook/", $txt)) {
echo "the post contains words restricted!";
}
//else send data to the database
答案 0 :(得分:3)
由于字符串很短:
<?php
// Note that this will remove newlines!
$message = filter_input(INPUT_POST, "msg", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_ENCODE_AMP);
// Note the usage of a mutli-byte function.
if (mb_strlen($message) > 160) {
exit("Your message contains more then 160 characters.");
}
// Array containing the all lower-cased words which are restricted.
$restricted_words = array("facebook", "twitter");
// Lowercase the message for our search (again multi-byte).
$words = mb_strtolower($message);
// Create an array by splitting the words at the grammatically correct word
// delimiter character (a space).
$words = explode(" ", $words);
// Flip the array, so we can directly check with isset() for existence.
$words = array_flip($words);
// Now go through all restricted words and see if they are part of the message.
foreach ($restricted_words as $delta => $restricted_word) {
if (isset($words[$restricted_word])) {
exit("Your message contains a restricted word.");
}
}
我发现你的整个方法存在一个问题,因为你只是检查完美输入的单词。过去许多项目试图对用户和类似的东西强加亵渎过滤器。这就是为什么您经常会看到有人发布fu@#
或dafuq
而非实际发布的单词fuck
或what the fuck
。您的用户可能只是采用类似的方式并发布FB
而不是Facebook
。如果真的需要这样的字过滤器,请重新考虑。如果是,请考虑使用Levenshtein distance检查单词是否相似(这将是一项昂贵的操作并可能产生误报)。
在最后一个注释中,您正在搜索的正则表达式:
<?php
preg_match("/(Facebook|Twitter)/i", $message, $matches);
括号创建一个组,管道用于分隔我们想要匹配的各种替代词。最后但并非最不重要的是,i
修饰符用于使整个事件不区分大小写。 (可选)第三个参数将包含匹配项,以便您可以告诉用户在消息中找到了哪些受限制的单词。
答案 1 :(得分:2)
<?php
$restricted_words = array("facebook", "twitter", "google plus"); //add restricted word or character in array
$replace = array(''); // add here word or character with whom you want to replace, i added blank because i want to replace with blank
$message = str_replace($restricted, $replace, $_POST['message']);
?>