php是数字的,strlen即使为false也返回true

php是数字的,strlen即使为false也返回true,php,strlen,Php,Strlen,我正在使用提交表单提交一个8位数的数字。我试图使用is_numeric和strlen来确保“12345678”返回成功,而“adsf”和“123”也返回成功。我似乎不知道我错过了什么来实现这一点 <?php if (!empty($_POST['WorkOrder']) && isset($_POST['WorkOrder'])) { if (!is_numeric($_POST['WorkOrder']) && (!strlen($_

我正在使用提交表单提交一个8位数的数字。我试图使用is_numeric和strlen来确保“12345678”返回成功,而“adsf”和“123”也返回成功。我似乎不知道我错过了什么来实现这一点

<?php 

  if (!empty($_POST['WorkOrder']) && isset($_POST['WorkOrder'])) {

      if (!is_numeric($_POST['WorkOrder']) && (!strlen($_POST['WorkOrder']) == 8)) {

?>
                            <div class="alert alert-danger">
                            You cannot enter a blank or invalid work order number! You entered <?php echo "\"".$_POST['WorkOrder']."\""; ?>
                        </div>

<?php
  } else {
  $sql1 = "";
?>

                            <div class="alert alert-success">
                            <?php echo $_POST['WorkOrder']. " has been updated successfully!"; ?>
                        </div>

<?php

    //mysql_query($sql1) or die(mysql_error());
  } } ?>

您不能输入空白或无效的工作订单编号!你进来了

您应该使用或不使用,并将strlen与8值进行比较

if (!is_numeric($_POST['WorkOrder']) || strlen($_POST['WorkOrder']) !== 8) {

您正在使用
的函数之前的code>不是

您实际要问的是:
这个变量不是数字吗?
这个变量不是长度…

相反,您应该使用
if(is_numeric($var)&&strlen($var)==…)


祝你好运

不相关,但
empty()
还检查变量
isset()
。不用用后者,谢谢!我知道这很简单。