常用的用户输入检查函数(邮箱、URL、IP地址等)

<?php
declare(strict_types=1);
ini_set('display_errors', 'On');
error_reporting(-1);


/**
 * 检查是否是日期
 *
 * @param string $date 日期,示例:2008-08-08
 * @return bool true=是日期|false=不是日期
 */
function is_date(string $date): bool
{
    $time = strtotime("$date 00:00:00");
    if (is_int($time)) {
        $ok = date('Y-m-d', $time) === $date;
    } else {
        $ok = false;
    }

    return $ok;
}


/**
 * 检查是否是日期时间
 *
 * @param string $datetime 日期时间,示例:2008-08-08 08:08:08
 * @return bool true=是日期时间|false=不是日期时间
 */
function is_datetime(string $datetime): bool
{
    $time = strtotime($datetime);
    if (is_int($time)) {
        $ok = date('Y-m-d H:i:s', $time) === $datetime;
    } else {
        $ok = false;
    }

    return $ok;
}


/**
 * 检查是否是电子邮箱
 *
 * @param string $email 电子邮箱
 * @return bool true=是电子邮箱|false=不是电子邮箱
 */
function is_email(string $email): bool
{
    return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}


/**
 * 检查是否是IP地址
 *
 * @param string $ip IP地址
 * @return bool true=是IP地址|false=不是IP地址
 */
function is_ip(string $ip): bool
{
    return filter_var($ip, FILTER_VALIDATE_IP) !== false;
}


/**
 * 检查是否是月份
 *
 * @param string $month 月份,示例:2008-08
 * @return bool true=是月份|false=不是月份
 */
function is_month(string $month): bool
{
    $time = strtotime("$month-01 00:00:00");
    if (is_int($time)) {
        $ok = date('Y-m', $time) === $month;
    } else {
        $ok = false;
    }

    return $ok;
}


/**
 * 检查是否是正整数
 *
 * @param string $int 数字(注意:允许数字前面带加号,即如果数字是正整数,那么其前面有加号也判断为正整数)
 * @return bool true=是正整数|false=不是正整数
 */
function is_positive_int(string $int): bool
{
    $integer = filter_var($int, FILTER_VALIDATE_INT); // 注:如果是整数字符串,filter_var()会返回int类型
    if (is_int($integer)) {
        $ok = $integer > 0; // 进一步判断是否为正整数
    } else {
        $ok = false;
    }

    return $ok;
}


/**
 * 检查是否是URL
 *
 * @param string $url URL
 * @return bool true=是URL|false=不是URL
 */
function is_url(string $url): bool
{
    return filter_var($url, FILTER_VALIDATE_URL) !== false;
}

Copyright © 2024 码农人生. All Rights Reserved