php常用方法汇总

简介:php生成随机字符串、解析XML、获取客户端真实IP、php打包压缩zip及解压缩zip、pho检测是否为ajax请求、验证邮箱地址是否正确等基础操作

PHP生成一个随机字符串

<?php
// 定义生成随机字符串的函数
function generate_rand($l){
    $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    srand((double)microtime()*1000000);
    for($i=0; $i<$l; $i++) {
        $rand.= $c[rand()%strlen($c)];
    }
    return $rand;
}

echo generate_rand(6); 

PHP解析 XML 数据

php中解析json直接使用json_decode函数即可,解析XML就比较麻烦了,下面就以XML解析给大家介绍一下:

<?php

$xml_string = "<?xml version='1.0'?>".
"<users>".
    "<user id='398'>".
        "<name>Foo</name>".
        "<email>foo@bar.com</email>".
    "</user>".
    "<user id='867'>".
        "<name>Foobar</name>".
        "<email>foobar@foo.com</email>".
    "</user>".
"</users>";

//使用simplexml加载xml字符串
$xml = simplexml_load_string($xml_string);
//遍历xml节点
foreach ($xml->user as $user) {
    //access attribute
    echo $user['id'], ' ';
    //subnodes are accessed by -> operator
    echo $user->name, ' ';
    echo $user->email.PHP_EOL;
}

PHP获取客户端真实 IP 地址

由于各种代理的存在,服务器想要换取客户端真实的不能只是简单的通过REMOTE_ADDR获取。

<?php
//获取客户端IP
function getRealIpAddr() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    }
    //检查ip是否从代理传递
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    return $_SERVER['REMOTE_ADDR'];
}

echo getRealIpAddr();

PHP寻找两个字符串的相似性

PHP提供了一个极少使用的similar_text函数。用于比较两个字符串并返回相似程度的百分比

<?php
/**
 * 参数一:规定要比较的第一个字符串
 * 参数二:规定要比较的第二个字符串
 * 参数三:可选。规定供存储百分比相似度的变量名。
 */
echo similar_text("Hello World","Hello Peter");

// 输出 7

PHP文件 Zip 压缩

将多个文件打包压缩成zip

<?php


/**
 * 文件Zip压缩
 * @param array $files 待压缩的文件数组
 * @param string $destination 压缩包名称
 * @param false $overwrite 如果压缩包存在是否覆盖
 * @return bool
 */
function create_zip($files = array(),$destination = '',$overwrite = false) {
    //如果压缩包已存在,并且不允许覆盖,直接返回false
    if(file_exists($destination) && !$overwrite) {
        return false;
    }

    $valid_files = array();
    if(is_array($files)) {
        //过滤不存在的文件
        foreach($files as $file) {
            //判断文件是否存在
            if(file_exists($file)) {
                $valid_files[] = $file;
            }
        }
    }
    if(count($valid_files)==0) return false;
    //创建zip对象
    $zip = new \ZipArchive();
    if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
        return false;
    }
    //添加待压缩的文件
    foreach($valid_files as $file) {
        $zip->addFile($file,$file);
    }
    //关闭压缩包
    $zip->close();
    //如果压缩包存在,表示压缩成功
    return file_exists($destination);
}
/***** 测试 ***/
$files=array('file1.jpg', 'file2.jpg', 'file3.gif');
create_zip($files, 'myzipfile.zip', true);

PHP解压缩 Zip 文件

<?php

/**
 * 解压缩封装
 * @param $file 压缩文件路径
 * @param $destination 解压缩存放目录
 * @return bool
 */
function unzip_file($file, $destination){
    // 创建Zip对象
    $zip = new \ZipArchive();
    // 打开压缩包
    if ($zip->open($file) !== TRUE) {
        die ("Could not open archive");
    }
    // 将内容提取到目标目录
    $zip->extractTo($destination);
    // 关闭压缩包
    $zip->close();
    return true;
}

PHP检测 ajax 请求

大多数的 JavaScript 框架如 jquery,Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,因此你可以在服务器端侦测到 Ajax 请求。

<?php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
    //AJAX Request
}

PHP验证邮件地址

<?php
/**
 * 参数一:为待验证的邮箱
 * 参数二:是否验证邮箱的域名
 */
function is_valid_email($email, $test_mx = false) {
    if(preg_match("/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email)) {
        if($test_mx) {
            list($username, $domain) = explode("@", $email);
            return getmxrr($domain, $mxrecords);
        }
        return true;
    }
    return false;
}

var_dump(is_valid_email('13246190524@163.com',false)); //返回true

var_dump(is_valid_email('13246190524@163.com',true));  //返回true

PHP列出目录内容

<?php


function list_files($dir) {
    $list = [];
    // 判断目录是否存在
    if(is_dir($dir)) {
        // 打开目录句柄
        if($handle = opendir($dir)) {
            // 读取目录
            while(($file = readdir($handle)) !== false) {
                if($file != "." && $file != ".." && $file != "Thumbs.db") {
                    array_push($list,$file);
                }
            }
            closedir($handle);
        }
    }
    return $list;
}

var_dump(list_files(__DIR__.'/dist'));

 

有遗漏或者不对的可以在我的公众号留言哦

编程经验共享公众号二维码

编程经验共享公众号二维码
更多内容关注公众号
Copyright © 2021 编程经验共享 赣ICP备2021010401号-1