我想在strlen命令中添加2个数字。这是我的PHP代码:
$name = mysql_real_escape_string($_POST['dgt']);
if(strlen($name) != "32") {
print "This is not a name.";
} else {
检查长度是否为32.我希望检查长度是否为32或40.我该怎么做?
答案 0 :(得分:4)
首先,不要使用mysql_real_escape_string()
;旧的mysql_
API已弃用,因此请考虑切换为PDO或mysqli。
其次,你应该考虑使用输入过滤; $_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开始,您要使用
$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))