我想在strlen命令中添加2个数字。这里是我的php代码:在if语句中添加多个条件
$name = mysql_real_escape_string($_POST['dgt']);
if(strlen($name) != "32") {
print "This is not a name.";
} else {
它检查是否长度是32.我想要它检查长度是32或40.我该怎么做?
我想在strlen命令中添加2个数字。这里是我的php代码:在if语句中添加多个条件
$name = mysql_real_escape_string($_POST['dgt']);
if(strlen($name) != "32") {
print "This is not a name.";
} else {
它检查是否长度是32.我想要它检查长度是32或40.我该怎么做?
从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))
在条件中使用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 {
最重要的是,将strlen放在一个变量名中,以便它只被调用一次(而不是两次)。口译员不会很聪明地为你做这件事。 – user2910265
哦,我以为你在谈论第二个有条件的使用或。 OP的问题很混乱,因为他说他的代码正在检查字符串是否长度为32,当它实际检查它是否不是32时,所以我在回答时感到困惑。 –
首先,不使用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.";
}
你不应该适用'mysql_real_escape_string()'除非在查询中立即使用。 –
为什么你使用报价大约32 ?? ...删除报价 –
顺便说一句,长度为32或40的名称有什么特别之处? –