【问题标题】:PHP If statement disallowing certain words from an arrayPHP If 语句不允许数组中的某些单词
【发布时间】:2014-07-03 14:28:04
【问题描述】:

在一些帮助之后,我有一个包含不允许显示的单词的数组,因为它们是淫秽的,所以我无法在此处显示。

我想要做的是检查if $_POST['urlprefix'] != 数组元素之一,我想知道最简单的方法是什么。显然下面只停止了数组的一个元素。

感谢您提供的任何帮助

if($_POST['urlprefix'] != $arr[1]) {
  print("You've Passed");
} else {
  print("You Are Not Allowed To Use That URL Prefix");
}

【问题讨论】:

标签: php arrays post if-statement


【解决方案1】:

in_array() 的示例是实现这一目标的快速方法。您也可以通过 preg_grep 使用 case-insensitive in_array function

但是,如果 ship 是一个坏词,你要允许 shippy 吗?以下代码也将禁止任何包含该词的前缀。

$disallow = false;
foreach($arr as $bad_word) {
    if(stripos($_POST['urlprefix'], $bad_word) !== false) {
         $disallow = true;
         break;
    }
}

if($disallow) {
    die('Bad words in URL!');
}

【讨论】:

    【解决方案2】:

    你可以使用 in_array 函数:

    if (!in_array($_POST['urlprefix'], $arr))
    {
        print("You've Passed");
    }
    else
    {
        print("You Are Not Allowed To Use That URL Prefix");
    }
    

    http://www.php.net/manual/fr/function.in-array.php

    【讨论】:

    • 谢谢,我什至不知道它存在 :)
    【解决方案3】:

    您可以使用这种方式。 in_array 比此方法。查看更多关于array_flip的信息。

    $words = array('damn','shit');
    $flip = array_flip($words);
    if(!isset($flip[$_POST['urlprefix']])){
        //valid url
    }
    

    【讨论】:

    • 你不能在低于 5.4 的 PHP 版本中使用array_flip($words))[$_POST['urlprefix']]
    【解决方案4】:

    您可以使用 php in_array 函数。它检查一个值是否存在于数组中

    if(!in_array($_POST['urlprefix'], $arr)) {
          print("You've Passed");
        } else {
          print("You Are Not Allowed To Use That URL Prefix");
        }
    

    【讨论】:

    • 请避免只有代码的答案,解释一下你的代码。例如,在这里你可以知道他正在寻找 in_array 函数,并放一个指向文档的链接。
    • 好吧抱歉,我会这样做的
    猜你喜欢
    • 2011-06-17
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多