gpt4 book ai didi

php - 如何过滤字符串中的多个限制词?

转载 作者:行者123 更新时间:2023-12-01 18:51:13 25 4
gpt4 key购买 nike

在我的网站上,我有一个状态更新表单,用户可以填写该表单来更新其状态,最多可输入 160 个字符。到目前为止,我的表单上有一些限制,例如:“用户不能发布 >160 个字符,如果他添加 >160 个字符,则会向他显示一条警告消息。”这一切都对我有用。

Now I want to add a restriction on the user input, meaning that if a user enters restricted words, then the post will not be submitted and the user will see an error message.

限制字词:FacebookTwitterWhatsappMxitQeep .
到目前为止,我只能向我的函数添加一个单词,我想向它添加所有上述单词,请帮忙!谢谢

 <?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

最佳答案

由于字符串很短:

<?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而不是实际的单词 fuckwhat the fuck 。您的用户可能只是求助于类似的东西并发布 FB而不是Facebook 。重新思考一下这样的词过滤器是否真的有必要。如果是,请考虑使用 Levenshtein distance检查单词是否相似(这将是一项昂贵的操作,并且可能会产生误报)。

<小时/>

最后一点,您要搜索的正则表达式:

<?php

preg_match("/(Facebook|Twitter)/i", $message, $matches);

方括号创建一个组,管道用于分隔我们想要匹配的各种替代单词。最后但并非最不重要的i修饰符用于使整个内容不区分大小写。 (可选)第三个参数将包含匹配项,以便您可以告诉用户在消息中找到了哪些限制词。

关于php - 如何过滤字符串中的多个限制词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27876757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com