简介: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'));
有遗漏或者不对的可以在我的公众号留言哦