首页 > 解决方案 > 如何将文本区域的内容与php数组中的值进行比较?

问题描述

我想检查文本区域的内容是否包含某些“坏词”。我从 textarea 中读取了内容,$_POST['message'] 这是我的 textarea:

<textarea class="form-control" name="message" placeholder="MESSAGE"></textarea>                             

所有的坏词都在一个数组中:

// read bad words into array
$blacklistfile = 'blacklist/badwords.txt';
$blacklistarray = file($blacklistfile, FILE_IGNORE_NEW_LINES);

为了检查 的内容是否$_POST['message']包含这些坏词,我想:将 的所有内容$_POST['message']放入一个数组中并比较这些数组。

我在消息后的 textarea [] 中尝试过:

<textarea class="form-control" name="message[]" placeholder="MESSAGE"></textarea>   

和:

$usermessage = $_POST['message'];
print_r($usermessage);

print_r()没有给我任何输出

那么如何将 textarea 的内容放入数组中?

或者:也许还有其他可能实现这一目标?

标签: phparraysposttextarea

解决方案


您的 textarea 将提交一个字符串

<textarea class="form-control" name="message" placeholder="MESSAGE"></textarea>

在服务器上,您必须在空格上分解此字符串以获取单词数组

$textareaValue = $_POST['message'];
$wordsToCheck = explode(" ",$textareaValue);

您还可以过滤独特的单词以避免重复迭代

$wordsToCheck = array_unique($wordsToCheck); 

之后,您可以将每个 textarea 单词与 badlist 进行比较

foreach ($wordsToCheck as $word){
    if(in_array($word, $blacklistarray)){
        //word is bad
    }else{
        //it's ok
    }
}

我是否正确理解了您的问题?


推荐阅读