PHP函数大全·持续更新

提醒:本文最后更新于 2024-10-11 16:59,文中所关联的信息可能已发生改变,请知悉!

邮箱验证

function is_valid_email($email) {if (preg_match('/^[\\w\\-\\.]+@[\\w\\-\\.]+(\\.\\w+)+$/', $email)) {return true;} else {return false;}
}

OR

function check_email($email)
{$result = trim($email);
    if (filter_var($result, FILTER_VALIDATE_EMAIL)) {return true;} else {return false;}
}

301 跳转

function redirect($url) {header('location:'.$url, false, 301);
    exit;
}

获取客户端 IP

function real_ip($type = 0)
{$ip = $_SERVER['REMOTE_ADDR'];
    if ($type <= 0 && isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {foreach ($matches[0] as $xip) {if (filter_var($xip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
                $ip = $xip;
                break;
            }
        }
    } elseif ($type <= 0 && isset($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {$ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif ($type <= 1 && isset($_SERVER['HTTP_CF_CONNECTING_IP']) && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
    } elseif ($type <= 1 && isset($_SERVER['HTTP_X_REAL_IP']) && filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {$ip = $_SERVER['HTTP_X_REAL_IP'];
    }
    return $ip;
}

X_FORWARDED_FOR:之前的获取真实 IP 方式,极易被伪造 IP
X_REAL_IP:在网站使用 CDN 的情况下选择此项,在不使用 CDN 的情况下也会被伪造
REMOTE_ADDR:直接获取真实请求 IP,无法被伪造,但可能获取到的是 CDN 节点 IP

取中间文本

function getSubstr($str, $leftStr, $rightStr)
{$left = strpos($str, $leftStr);
    $right = strpos($str, $rightStr, $left);
    if ($left < 0) return '';
    if ($right > 0) {return substr($str, $left + strlen($leftStr), $right - $left - strlen($leftStr));
    } else {return substr($str, $left + strlen($leftStr));
    }
}

是否 HTTPS 访问

function is_https()
{if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) {return true;} elseif (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on' || $server['HTTPS'] == '1')) {return true;} elseif (isset($_SERVER['HTTP_X_CLIENT_SCHEME']) && $_SERVER['HTTP_X_CLIENT_SCHEME'] == 'https') {return true;} elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {return true;} elseif (isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https') {return true;} elseif (isset($_SERVER['HTTP_EWS_CUSTOME_SCHEME']) && $_SERVER['HTTP_EWS_CUSTOME_SCHEME'] == 'https') {return true;}
    return false;
}

随机 IP

function randIp()
{return mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255) . '.' . mt_rand(0, 255);
}

毫秒时间戳

function msectime() {list($msec, $sec) = explode(' ', microtime());
    return (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
}

获取重定向地址

function getrealurl($url){@$header = get_headers($url,1);
    if (strpos($header[0],'301') || strpos($header[0],'302')) {if(is_array($header['Location'])) {return $header['Location'][count($header['Location'])-1];
        }else{return $header['Location'];
        }
    }else {return $url;}
}

jsonp 转数组

function jsonp_decode($jsonp, $assoc = false)
{$jsonp = trim($jsonp);
    if (isset($jsonp[0]) && $jsonp[0] !== '[' && $jsonp[0] !== '{') {$begin = strpos($jsonp, '(');
        if (false !== $begin) {$end = strrpos($jsonp, ')');
            if (false !== $end) {$jsonp = substr($jsonp, $begin + 1, $end - $begin - 1);
            }
        }
    }
    return json_decode($jsonp, $assoc);
}

秒数转换详细时间

/**
 * 将秒数转换为剩余详细时间!*/
function Sec2Time($time)
{if (is_numeric($time)) {
        $value = array(
            "years" => 0, "days" => 0, "hours" => 0,
            "minutes" => 0, "seconds" => 0,
        );
        if ($time >= 31556926) {$value["years"] = floor($time / 31556926);
            $time = ($time % 31556926);
        }
        if ($time >= 86400) {$value["days"] = floor($time / 86400);
            $time = ($time % 86400);
        }
        if ($time >= 3600) {$value["hours"] = floor($time / 3600);
            $time = ($time % 3600);
        }
        if ($time >= 60) {$value["minutes"] = floor($time / 60);
            $time = ($time % 60);
        }
        $value["seconds"] = floor($time);

        $t = ($value["years"] >= 1 ? $value["years"] . "年" : '') . ($value["days"] >= 1 ? $value["days"] ." 天 ":'') . ($value["hours"] >= 1 ? $value["hours"] . "小时" : '') . ($value["minutes"] >= 1 ? $value["minutes"] ." 分 ":'') . ($value["seconds"] >= 1 ? $value["seconds"] . "秒" : '');
        return (!empty($t) ? $t : '0 秒');
    } else {return (bool) FALSE;
    }
}

时间相差秒数

/**
 * @param $startdate 开始时间
 * @param int $enddate 结束时间
 * 返回两者之间相差多少秒
 */
function TimeLag($startdate, $enddate = -1)
{
    global $date;
    $enddate = ($enddate == -1 ? $date : $enddate);
    $time = strtotime($enddate) - strtotime($startdate); // 和结束时间的时间戳
    $text = '';
    $dater = floor(($time) / 86400);
    if ($dater > 0) {$time = $time - ($dater * 86400);
        $text .= $dater . '天';
    }
    $hour = floor(($time) / 3600);
    if ($hour > 0) {$time = $time - ($hour * 3600);
        $text .= $hour . '小时';
    }
    $minute = floor(($time) / 60);
    $time = $time - ($minute * 60);
    if ($minute > 0) {$text .= $minute . '分钟';}
    $second = floor(($time) % 60);
    if ($second > 0) {$text .= $second . '秒';}

    return $text;
}

生成唯一 token 参数

/**
 * @param $vals 混淆函数
 * 生成唯一 token 参数!*/
function TokenCreate($vals = '1')
{$key = mt_rand();
    $hash = hash_hmac("sha1", $vals . mt_rand() . time(), $key, true);
    return str_replace(['=', '_', '-'], '', strtr(base64_encode($hash),'+/','-_'));
}

获取第一天最后一天

/*
 * 获取某个月第一天 / 最后一天代码
 */
function getthemonth($date)
{$firstday = date('Y-m-01', strtotime($date));
    $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
    return array($firstday, $lastday);
}
正文完
 0
簡單
版权声明:本站原创文章,由 簡單 于2022-10-14发表,共计4890字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。