-1

我有一个发送电子邮件的表格。我有一个要禁止的单词列表,它们是手动输入到数组中的。数组中的每个单词都会得到一个点,该点最终可以拒绝邮件发送。我想把这些词放到一个文件中而不是调用,因为虽然这有效,但更新速度很慢,尤其是跨多个域。对不起我的技能不足。谢谢。

$badwords = array("word1", "word2", "word3");
foreach ($badwords as $word)
  if (strpos(strtolower($_POST['comments']), $word) !== false

随着坏词加起来,点值增加到一个限制,然后拒绝发送。

对不起,我显然不清楚。我想获取现有的坏词数组并将它们以某种顺序和条目(每行一行,还是逗号分隔?)放在一个文件中。我想调用该文件以由现有脚本读取。所以理论上它可能看起来像:$badwords = badwords.php 等等....谢谢

4

3 回答 3

0

在 words.php 中:

<?php

   $words = ["filter","these","words","out"];

在您的主脚本中:

<?php

   include "words.php";
   print_r($words);

结果:

Array
(
    [0] => filter
    [1] => these
    [2] => words
    [3] => out
)
于 2019-12-08T18:26:56.577 回答
0

我不确定这是否是您需要的?试试看。这段代码应该可以解决您的需要。从 'message' 中的 'bedwords' 列表中找到 'badwords',计算每个 'bedwords' 单词的出现次数,并为每个正面结果(甚至重复)在 '$ 罚分' 上加 1 个罚分。该代码忽略大写和小写字母。设置列表:

$badwords = ['world', 'car', 'cat', 'train',];
$message = "World is small. I love music and my car. But I also love to 
            travel by train. I like animals, especially my cat.";

我们将初始化用于计算罚分的变量。

$penalty = 0;

现在,我们需要浏览与“badwords”字段中一样多的“message”。我们将使用“for”循环。

for($k =0; $k <= count($badwords) - 1; $k++):
preg_match_all("/$badwords[$k]/i", $message, $out[])
endfor;

我们现在通过消息循环总共传递了 5 个(从 0 到 4)。使用正则表达式,我们将匹配的单词存储在“out”数组中,从而创建一个多维数组。现在你需要通过这个“out”字段。我们减小它的尺寸。

foreach ($out as &$value): 
      $value = $value[0];
  endforeach;

我们现在将使用“for”循环再次遍历这个 out 字段并计算每个维度中值的数量。根据计算出的值,我们将为每场比赛分配 1 个罚分和一个重复。

  for($n = 0; $n <= count($out)-1; $n++):
  $penalty += count($out[$n]);
 endfor;

结果是获得的分数。

这是 php 的源代码,位于 PHP Fiddle http://phpfiddle.org/main/code/jzyw-hva6

于 2019-12-08T16:14:48.917 回答
0

弄清楚了。

在我的网站空间的根目录中,我创建了一个名为 words.php 的文件

<?php
$badwords = array("000", "adult", etc

然后在我的主文件中添加了一个包含(因为有计数的单词,所以可以不止一个)

include "../badwords.php";  // the array list was here

并继续 foreach 语句。

并从该主文件中删除了该原始行。

$badwords = array("word1", "word2", "word3");

似乎正在工作。谢谢

于 2019-12-09T19:41:38.880 回答