在if语句中添加多个条件

时间:2013-12-16 04:11:27

标签: php strlen

我想在strlen命令中添加2个数字。这是我的PHP代码:

$name = mysql_real_escape_string($_POST['dgt']);
if(strlen($name) != "32") {
print "This is not a name.";
} else {

检查长度是否为32.我希望检查长度是否为32或40.我该怎么做?

3 个答案:

答案 0 :(得分:4)

首先,不要使用mysql_real_escape_string();旧的mysql_ API已弃用,因此请考虑切换为PDOmysqli

其次,你应该考虑使用输入过滤; $_POST['dgt']可能根本不存在,因此请使用filter_input()

第三,你应该使用数值来与strlen()的输出进行比较;虽然PHP会将"32"视为一个数字,但最好是明确的。

最后,如果名称长度必须为32或40,则只需添加条件:

$name = filter_input(INPUT_POST, 'dgt', FILTER_UNSAFE_RAW);
if (empty($name) || (strlen($name) != 32 && strlen($name) != 40)) {
    print "This is not a name.";
}

或者,使用in_array()

if (empty($name) || !in_array(strlen($name), array(32, 40))) {
    print "This is not a name.";
}

答案 1 :(得分:1)

使用and运算符“&&”在您的条件中,如下面的代码。

if(strlen($name) != 32 && strlen($name) != 40)

如果您希望检查name 长度为32或40,请使用or运算符“||”比如下面的代码。

if(strlen($name) == 32 || strlen($name) == 40)

user2910265 有一个好点,将strlen()的返回值分配给变量,这样只进行一次调用,就像这样。

$length = strlen($name);
if(!($length == 32 || $length == 40))
    print "this is not a name.";
} else {

答案 2 :(得分:0)

PHP: Logical Operators - Manual开始,您要使用

  1. || (此表格具有更高的优先权)
  2. $a or $b    Or  TRUE if either $a or $b is TRUE.
    $a || $b    Or  TRUE if either $a or $b is TRUE.
    

    所以,你可以使用这样的东西

    $len = strlen($name);         // just get the length once and then 
                                  // use it to compare however many times....
    if (!($len == 32 or $len == 40))