遇到非格式正确的数值

2022-08-30 06:46:52

我有一个表单,它将两个日期(开始和结束)传递给PHP脚本,该脚本将把它们添加到数据库中。我在验证这一点时遇到问题。我不断收到以下错误

遇到非格式正确的数值

这是我使用以下内容时

date("d",$_GET['start_date']);

但是当我按照许多网站的建议使用strtotime()函数时,我得到的unix时间戳日期为1/1/1970。任何想法如何才能得到正确的日期?


答案 1

因为您要将字符串作为第二个参数传递给 date 函数,该函数应为整数。

字符串日期 ( 字符串 $format [, int $timestamp = time() ] )

尝试 strtotime,它将任何英文文本日期时间描述解析为 Unix 时间戳(整数):

date("d", strtotime($_GET['start_date']));

答案 2

当您使用使用字母组合数字(字母数字)的变量执行计算时,会发生此错误,例如24kb,886ab ...

我在以下函数中遇到错误

function get_config_bytes($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);       
    switch($last) {
        case 'g':
            $val *= 1024;
        case 'm':
            $val *= 1024;
        case 'k':
            $val *= 1024;
    }
    return $this->fix_integer_overflow($val);
}

应用程序上传了图像,但它不起作用,它显示以下警告:

enter image description here

溶液:该函数使用字母数字数据提取变量的整数值,并创建一个具有相同值但使用该函数转换为整数的新变量。代码如下:intval()intval()

function get_config_bytes($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);
    $intval = intval(trim($val));
    switch($last) {
        case 'g':
            $intval *= 1024;
        case 'm':
            $intval *= 1024;
        case 'k':
            $intval *= 1024;
    }
    return $this->fix_integer_overflow($intval);
}

函数fix_integer_overflow

// Fix for overflowing signed 32 bit integers,
// works for sizes up to 2^32-1 bytes (4 GiB - 1):
protected function fix_integer_overflow($size) {
    if ($size < 0) {
        $size += 2.0 * (PHP_INT_MAX + 1);
    }
    return $size;
}

推荐