您的位置 首页 php

PHP常用函数,记录下

PHP常用函数,记录下

/**

* UTF-8编码 GBK编码相互转换/(支持数组)

*

* @param array $str 字符串 ,支持数组传递

* @param string $in_charset 原字符串编码

* @param string $out_charset 输出的字符串编码

* @return array

*/

function array_iconv($str, $in_charset=”gbk”, $out_charset=”utf-8″){

if(is_array($str)){

foreach($str as $k => $v){

$str[$k] = array_iconv($v);

}

return $str;

}else{

if(is_string($str)){

// return iconv(‘UTF-8’, ‘GBK//IGNORE’, $str);

return mb_convert_encoding($str, $out_charset, $in_charset);

}else{

return $str;

}

}

}

/**

*gbk转utf-8 简单转换

*@param $data

*@return array

*/

function gbk2utf8($data){

if(is_array($data)){

return array_map(‘gbk2utf8’, $data);

}

return iconv(‘gbk’,’utf-8′,$data);

}

/**

*导出Excel文档数据

*@param str $title 导出文档名称

*@param array $ Header 导出文档字段标题

*@param array $field 方便与标题对齐的标题

*@param array $data 文档的内容数据

*@param str $dir 导出文档保存地址(type=2时为生成的临时文件地址)

*@param str $ ext 导出文档后缀格式,默认xls

*@param str $type 导出类型(1:只保存不下载,2:只下载不保存)

*@return str 文件地址

*示例:

*$title = ‘test’;

*$header = array(‘ID’,’用户名’,’联系方式’);

*$field = array(‘0′,’1′,’2’);

*$data = array(

*array($field[0]=>’1′,$field[1]=>’小明’,$field[2]=>’123456′),//直接用$field数组数据

*array(‘0’=>’2′,’1’=>’xiaolan’,’2’=>’124578′),//直接与$field数据一样

*array(‘0’=>’3′,’1’=>’xiaohei’,’2’=>’147852′),

*array(‘0’=>’4′,’1’=>’xiaodian’,’2’=>’1598753′),

*);

*$dir = ‘excel/excel/’;

*export_excel($title,$header,$field,$data,$dir);

*/

function export_excel($title,$header,$field,$data,$dir,$ext=’.xls’,$type=2){

ob_clean();

header(“Content-type:text/html;charset=utf-8”);

require_once ‘diyupload/excel/PHPExcel.php’;// 引入phpexcel

$data=array_iconv($data);// 数据编码 转换

$header=array_iconv($header);//数据编码转换

$phpexcel = new PHPExcel();

// 设置表头

$chr = 65;

foreach($header as $k=>$v){

$phpexcel->setActiveSheetIndex(0)->setCellValue(chr($chr).’1′, $v);

$chr++;

}

// 标签名

$phpexcel->getActiveSheet()->setTitle($title);

// 使用第一个表

$phpexcel->setActiveSheetIndex(0);

$objWriter = new PHPExcel_Writer_Excel5($phpexcel);

//$objWriter = new PHPExcel_Writer_Excel2007($phpexcel);

foreach ($data as $key => $value) {

//表格是从2开始的 因为上面还有表头

$i = $key + 2;

$chr = 65;

foreach($field as $v){

$phpexcel->getActiveSheet()->setCellValue(chr($chr) . $i, $value[$v]);//这里是设置单元格的内容

$chr++;

}

}

if (!is_dir($dir)) {

mkdir($dir, 0777, TRUE);

}

$filename = $dir . time() . rand(10000, 99999) . $ext;

$objWriter->save($filename);

//exit;

if($type==1){//导出表格到文件夹

return $filename;

}elseif($type==2){//导出表格到下载

downdetails($filename);

unlink($filename);

return $filename;

}

}

/**

*从某文件夹中将文件下载

*@param str $file_path 文件所在地址,包含文件名

*

*/

function downdetails($file_path){

ob_clean();//下载前先清空缓存区,需要PHP开启ob

header(“Content-type:text/html;charset=utf-8”);

//$file_path=”testMe.txt”;

//用以解决中文不能显示出来的问题

//$file_name= iconv (“utf-8″,”gb2312”,$file_name);

//$file_sub_path=$_SERVER[‘DOCUMENT_ROOT’].”marcofly/phpstudy/down/down/”;

//$file_path=$file_sub_path.$file_name;

//首先要判断给定的文件存在与否

if(!file_exists($file_path)){

echo “没有该文件文件”;

return ;

}

$fp=fopen($file_path,”r”);

$file_size=filesize($file_path);

$file_name=time().’.xls’;

//下载文件需要用到的头

Header(“Content-type: application/octet-stream”);

Header(“Accept-Ranges: bytes”);

Header(“Accept-Length:”.$file_size);

Header(“Content-Disposition: attachment; filename=”.$file_name);

$buffer=1024;

$file_count=0;

//向浏览器返回数据

while(!feof($fp) && $file_count<$file_size){

$file_con=fread($fp,$buffer);

$file_count+=$buffer;

echo $file_con;

}

fclose($fp);

}

/**

*PHP下载,无其他插件

*@param str $postname form对应input标签中的ID值

*@param str $dir 需要上传之后保存的路径

*@param array $filtype 允许上传的文件类型(为空则默认为jpg,jpeg,gif,png)

*@return str 成功上传返回路径与名称,失败返回提示语

*

*/

function uploads($postname,$dir,$filtype){

$tempFile = $_FILES[$postname][‘tmp_name’];

if(empty($filtype) or isset($filtype)){

$fileTypes = array(‘jpg’,’jpeg’,’gif’,’png’);//默认允许上传的文件类型

}else{

$fileTypes=$filtype;

}

$fileParts = pathinfo($_FILES[$postname][‘name’]);

$extension = strtolower($fileParts[‘extension’]);

$name = date(‘mdHis’).’-‘.rand(100,999).’.’.$extension;

$targetFolder = ‘/’.$dir;

if(!is_dir($targetFolder)){mkdir($targetFolder,0777,TRUE);}

@chmod($targetFolder,0777);

$loca = $targetFolder.’/’.$name;

if(in_array($extension,$fileTypes)) {

if(copy($tempFile,$loca)){

return $dir.’/’.$name;

}

}else{

return ‘上传失败’;

}

}

/**

*获取客户端IP地址

*@return str $ip 返回客户端IP地址

*

*/

function get_real_ip(){

$ip=false;

if(!empty($_SERVER[‘HTTP_CLIENT_IP’])){

$ip=$_SERVER[‘HTTP_CLIENT_IP’];

}

if(!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’])){

$ips=explode (‘, ‘, $_SERVER[‘HTTP_X_FORWARDED_FOR’]);

if($ip){ array_unshift($ips, $ip); $ip=FALSE; }

for ($i=0; $i < count($ips); $i++){

if(!eregi (‘^(10│172.16│192.168).’, $ips[$i])){

$ip=$ips[$i];

break;

}

}

}

return ($ip ? $ip : $_SERVER[‘REMOTE_ADDR’]);

}

/**

*将字符串或数组转为json对象

*@param str or array $data 待转换数据

*@param str $charset 数据编码类型

*@return json

*/

function fix_json( $data,$charset = ‘utf-8’){

if( is_string( $data ) ){

$data = preg_replace(“/([\r\n\t\f])/”,” “,$data);

$temp = array();

if( $charset == “gbk” ){

$array = json_decode(iconv(‘GBK’, ‘UTF-8’, $data),true);

if( is_array($array) ){

foreach ($array as $key => $val){

$temp[ iconv(‘UTF-8’,$charset, $key) ] = iconv(‘UTF-8’, $charset, $val);

}

}

}else{

$temp = json_decode($data,true);

}

}else{

$temp = array();

if( $charset == “gbk” && PHP_VERSION >= ‘5.2’ ){

foreach ($data as $key => $val){

$temp[ iconv($charset,’UTF-8′, $key) ] = iconv( $charset,’UTF-8′, $val);

}

}else{

$temp = $data;

}

$temp = json_encode($temp);

}

return $temp;

}

/**

*多维数组转一维数组

*@param array $multi 待转的多维数组数据

*@return array

*/

function arrToOne($multi) {

$arr = array();

foreach ($multi as $key => $val) {

if( is_array($val) ) {

$arr = array_merge($arr, arrToOne($val));

} else {

$arr[] = $val;

}

}

return $arr;

}

说明:Excel导出和问卷下载前最好使用ob_clean()清除缓存区,可避免乱码和文件损坏,ob_clean()需要PHP开启ob

文章来源:智云一二三科技

文章标题:PHP常用函数,记录下

文章地址:https://www.zhihuclub.com/78119.shtml

关于作者: 智云科技

热门文章

评论已关闭

10条评论

  1. Hey there! Someone in my Facebook group shared this site with us so
    I came to give it a look. I’m definitely loving the information. I’m bookmarking and will
    be tweeting this to my followers! Wonderful blog
    and terrific design and style.

  2. Hi my friend! I wish to say that this article is amazing, nice written and include almost all significant infos.
    I’d like to see more posts like this.

    Feel free to surf to my site;

  3. What’s up, I read your new stuff regularly. Your story-telling style is awesome,
    keep up the good work!

    Feel free to visit my web-site:

  4. Hi, its nice paragraph about media print, we all be familiar with media is a great source of information.

  5. I was pretty pleased to uncover this web site.

    I need to to thank you for your time just for this wonderful read!!
    I definitely really liked every little bit of it and I
    have you saved as a favorite to look at new stuff on your website.

  6. Hello, I want to subscribe for this weblog to take hottest updates, therefore where
    can i do it please assist.

  7. I always waѕ concerned iin tһis topic and strock still
    am, thаnks for posting.

  8. Vеry goօd іnformation. Lufky mee Ι camе aⅽross үour website
    by chance (stumbleupon). Ӏ havе book marked іt for latеr!

  9. However, the true biological activity of the trans form of metabolite E could not be determined because this compound also readily isomerizes to its opposite isomeric form 74 Fig

网站地图