384 lines
10 KiB
PHP
384 lines
10 KiB
PHP
|
|
<?php
|
|||
|
|
class files{
|
|||
|
|
function encode($data){
|
|||
|
|
if($data!=null){
|
|||
|
|
$data=rawurlencode($data);
|
|||
|
|
}else{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
return $data;
|
|||
|
|
}
|
|||
|
|
function decode($data){
|
|||
|
|
if($data!=null){
|
|||
|
|
$data=rawurldecode($data);
|
|||
|
|
return $data;
|
|||
|
|
} else {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function opendir($path,$light=''){
|
|||
|
|
if(preg_match('/[\/]$/',$path)==false){
|
|||
|
|
$path=$path.'/';
|
|||
|
|
}
|
|||
|
|
if(!is_dir($path)){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if(($handle=opendir($path))==false){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
while($f=readdir($handle)){
|
|||
|
|
$f=$path.$f;
|
|||
|
|
$fname=$this->typename($f);
|
|||
|
|
if(is_array($light)){
|
|||
|
|
foreach($light as $value){
|
|||
|
|
if($fname==$this->path2name($value)) $fname="<font color=red>".$fname."</font>";
|
|||
|
|
}
|
|||
|
|
}elseif($light){
|
|||
|
|
if($fname==$this->path2name($light)) $fname="<font color=red>".$fname."</font>";
|
|||
|
|
}
|
|||
|
|
if($f==($path.'.')){
|
|||
|
|
$data['.']=realpath($f);
|
|||
|
|
}elseif($f==($path.'..')){
|
|||
|
|
$data['..']=realpath($f);
|
|||
|
|
}elseif(is_dir($f)){
|
|||
|
|
$data['dir'][]=array(
|
|||
|
|
'path'=>realpath($f),
|
|||
|
|
'name'=>$fname,
|
|||
|
|
'power'=>$this->power($f),
|
|||
|
|
'ftime'=>$this->ftime($f),
|
|||
|
|
'etime'=>$this->etime($f)
|
|||
|
|
);
|
|||
|
|
}elseif(is_file($f)){
|
|||
|
|
$data['file'][]=array(
|
|||
|
|
'path'=>realpath($f),
|
|||
|
|
'name'=>$fname,
|
|||
|
|
'size'=>$this->filesize($f),
|
|||
|
|
'typeimg'=>$this->typeimg($f),
|
|||
|
|
'power'=>$this->power($f),
|
|||
|
|
'ftime'=>$this->ftime($f),
|
|||
|
|
'etime'=>$this->etime($f)
|
|||
|
|
);
|
|||
|
|
}else{
|
|||
|
|
$data['other'][]=realpath($f);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return $data;
|
|||
|
|
}
|
|||
|
|
function page($array,$pagesize=0,$linkNum=7,$page=1){//<2F><>ҳ
|
|||
|
|
if(!preg_match('/^[0-9]+$/i',$page) || !$page) $page=1;
|
|||
|
|
$content=array();
|
|||
|
|
$total=count($array);
|
|||
|
|
if(!preg_match('/^[0-9]+$/i',$pagesize) || !$pagesize) $pagesize=$total;
|
|||
|
|
if(!$pagesize) $pagesize=30;
|
|||
|
|
$maxPage=ceil($total/$pagesize);//<2F><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
|
|||
|
|
$page=($page>($maxPage)?($maxPage):$page);
|
|||
|
|
$start=($page-1)*$pagesize;
|
|||
|
|
if($pagesize>$total) $pagesize=$total;
|
|||
|
|
for($i=$start;$i<($start+$pagesize);$i++){
|
|||
|
|
if($array[$i]) array_push($content,$array[$i]);
|
|||
|
|
}
|
|||
|
|
$this->start=($page-round($linkNum/2))>0 ? ($page-round($linkNum/2)) : "1";
|
|||
|
|
$this->end=($page+round($linkNum/2))<$maxPage ? ($page+round($linkNum/2)) : $maxPage;
|
|||
|
|
$this->maxPage=$maxPage;//<2F><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
|
|||
|
|
$this->pageSize=$pageSize;//ÿҳ<C3BF><D2B3>ʾ
|
|||
|
|
$this->linkNum=$linkNum;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
|||
|
|
$this->totalNum=$total;//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
$this->page=$page;//<2F><>ǰҳ
|
|||
|
|
return $content;
|
|||
|
|
}
|
|||
|
|
function getpagecs(){ //<2F><>ȡ<EFBFBD><C8A1>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>
|
|||
|
|
$myarray = array('Page'=>$this->page,'Start'=>$this->start,'End'=>$this->end,'maxPage'=>$this->maxPage,'pageSize'=>$this->pageSize,'linkNum'=>$this->linkNum,'totalNum'=>$this->totalNum);
|
|||
|
|
return $myarray;
|
|||
|
|
}
|
|||
|
|
function power($path){//<2F><>ȡȨ<C8A1><C8A8>
|
|||
|
|
$p=$this->decode($path);
|
|||
|
|
if(preg_match('/%/',$p)){
|
|||
|
|
return 'δ֪';
|
|||
|
|
}else{
|
|||
|
|
return substr(sprintf('%o',fileperms($p)),-4);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function ftime($path){//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
$p=$this->decode($path);
|
|||
|
|
if(preg_match('/%/',$p)){
|
|||
|
|
return 'δ֪';
|
|||
|
|
}else{
|
|||
|
|
return $this->times(gmdate("Y-m-d H:i:s",fileatime($p)+8*3600));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function etime($path){//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
$p=$this->decode($path);
|
|||
|
|
if(preg_match('/%/',$p)){
|
|||
|
|
return 'δ֪';
|
|||
|
|
}else{
|
|||
|
|
return $this->times(gmdate("Y-m-d H:i:s",filemtime($p)+8*3600));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function times($time){
|
|||
|
|
if(strtotime($time)>strtotime("today")){
|
|||
|
|
return '<font color=red><3E><><EFBFBD><EFBFBD></font> '.date("m-d H:i:s",strtotime($time));
|
|||
|
|
}elseif(strtotime($time)>strtotime("-2 day")){
|
|||
|
|
return '<font color=#ff6600><3E><><EFBFBD><EFBFBD></font> '.date("m-d H:i:s",strtotime($time));
|
|||
|
|
}elseif(strtotime($time)>strtotime("last week")){
|
|||
|
|
return '<font color=green><3E><><EFBFBD><EFBFBD></font> '.date("m-d H:i:s",strtotime($time));
|
|||
|
|
}else{
|
|||
|
|
return $time;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function path2name($path){
|
|||
|
|
return preg_replace('/^.+[\\\\\\/]/', '', $path);
|
|||
|
|
//return basename($path);
|
|||
|
|
}
|
|||
|
|
function typename($path){//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
$c=strrchr($path,'/');
|
|||
|
|
if($c){
|
|||
|
|
return str_replace("/", "", $c);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function typeimg($path){//<2F><>ȡ<EFBFBD>ļ<EFBFBD>ͼ<EFBFBD><CDBC>
|
|||
|
|
$c=strrchr($path,'.');
|
|||
|
|
if($c){
|
|||
|
|
$c=strtolower($c);//ת<><D7AA>Сд
|
|||
|
|
if($c=='.txt'){
|
|||
|
|
return "txt";
|
|||
|
|
}elseif($c=='.rar' || $c=='.zip'){
|
|||
|
|
return "rar";
|
|||
|
|
}elseif($c=='.js'){
|
|||
|
|
return "js";
|
|||
|
|
}elseif($c=='.gif' || $c=='.jpg' || $c=='.png' || $c=='.bmp' || $c=='.zip'){
|
|||
|
|
return "jpg";
|
|||
|
|
}elseif($c=='.css'){
|
|||
|
|
return "css";
|
|||
|
|
}elseif($c=='.php'){
|
|||
|
|
return "php";
|
|||
|
|
}elseif($c=='.tpl'){
|
|||
|
|
return "tpl";
|
|||
|
|
}elseif($c=='.asp'){
|
|||
|
|
return "asp";
|
|||
|
|
}elseif($c=='.mp3' || $c=='.wmv'){
|
|||
|
|
return "mp3";
|
|||
|
|
}else{
|
|||
|
|
return "da";
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
return 'da';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function filesize($path){
|
|||
|
|
$size=filesize($path);
|
|||
|
|
if($size<=1024) {
|
|||
|
|
return $size.'B';
|
|||
|
|
}elseif($size<=(1024*1024)){
|
|||
|
|
$size=$size/1024;
|
|||
|
|
return number_format($size,3).'KB';
|
|||
|
|
}elseif($size<=(1024*1024*1024)){
|
|||
|
|
$size=$size/1024/1024;
|
|||
|
|
return number_format($size,3).'MB';
|
|||
|
|
}else{
|
|||
|
|
$size=$size/1024/1024/1024;
|
|||
|
|
return number_format($size,3).'GB';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function adddir($name,$path){//<2F><><EFBFBD><EFBFBD>Ŀ¼
|
|||
|
|
if(preg_match('/^([a-zA-Z0-9_\-\.\x{4e00}-\x{9fa5}]+)$/u',$name)!=false){
|
|||
|
|
$paths=iconv("utf-8","gbk",$this->decode($path).'/'.$name);
|
|||
|
|
if(!is_dir($paths)){
|
|||
|
|
mkdir($paths,0777);
|
|||
|
|
}else{
|
|||
|
|
$name=$name."_".mt_rand(1,9999999);
|
|||
|
|
mkdir($this->decode($path).'/'.$name,0777);
|
|||
|
|
}
|
|||
|
|
return $name;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function re_name($name,$path){//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if(preg_match('/^([a-zA-Z0-9_\-\.\x{4e00}-\x{9fa5}]+)$/u',$name)!=false) {
|
|||
|
|
$path=iconv("utf-8","gbk",$this->decode($path));
|
|||
|
|
$name=iconv("utf-8","gbk",$name);
|
|||
|
|
if(is_dir($path)){
|
|||
|
|
chdir(dirname($path.'/'.$name).'/../');
|
|||
|
|
$to=getcwd().'/'.$name;
|
|||
|
|
if(is_dir($to)){
|
|||
|
|
$to=getcwd().'/'.$name."_".mt_rand(1,9999999);
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
$to=dirname($path).'/'.$name;
|
|||
|
|
if(file_exists($to)){
|
|||
|
|
$to=dirname($path).'/'.$name.".".mt_rand(1,9999999);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(rename($path,$to)!=false){
|
|||
|
|
return $this->decode(dirname($to));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function copyDir($source,$destination){
|
|||
|
|
$result = true;
|
|||
|
|
if(is_dir($source)){
|
|||
|
|
if(!is_dir($destination)){
|
|||
|
|
mkdir($destination,0777);
|
|||
|
|
}else{
|
|||
|
|
$destination=$destination."_".mt_rand(1,9999999);
|
|||
|
|
mkdir($destination,0777);
|
|||
|
|
}
|
|||
|
|
$handle = opendir($source);
|
|||
|
|
while(($file = readdir($handle)) !== false){
|
|||
|
|
if($file != '.' && $file != '..'){
|
|||
|
|
$src = $source . DIRECTORY_SEPARATOR . $file;
|
|||
|
|
$dtn = $destination . DIRECTORY_SEPARATOR . $file;
|
|||
|
|
if(is_dir($src)){
|
|||
|
|
$this->copyDir($src, $dtn);
|
|||
|
|
}else{
|
|||
|
|
if(!copy($src, $dtn)){
|
|||
|
|
$result = false;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
closedir($handle);
|
|||
|
|
}
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
function filemime($path){
|
|||
|
|
if(function_exists('finfo_open')==true){
|
|||
|
|
$finfo=finfo_open(FILEINFO_MIME);
|
|||
|
|
$mime=finfo_file($finfo,$path);
|
|||
|
|
finfo_close($finfo);
|
|||
|
|
return $mime;
|
|||
|
|
}elseif(function_exists('mime_content_type')==true){
|
|||
|
|
return mime_content_type($path);
|
|||
|
|
}else{
|
|||
|
|
return 'false';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function my_judge_empty_dir($directory){//<2F>ж<EFBFBD>Ŀ¼<C4BF>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
$handle = opendir($directory);
|
|||
|
|
while(($file = readdir($handle)) !== false){
|
|||
|
|
if ($file != "." && $file != ".."){
|
|||
|
|
closedir($handle);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
closedir($handle);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
function removeDir($dirName){//ɾ<><C9BE>Ŀ¼
|
|||
|
|
if(!is_dir($dirName)) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
$handle=opendir($dirName);
|
|||
|
|
while(($file=readdir($handle))!==false){
|
|||
|
|
if($file!="."&&$file!=".."){
|
|||
|
|
$dir=$dirName."/".$file;
|
|||
|
|
is_dir($dir) ? $this->removeDir($dir) : unlink($dir);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
closedir($handle);
|
|||
|
|
return rmdir($dirName) ;
|
|||
|
|
}
|
|||
|
|
function removeFile($path){//ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
|
|||
|
|
if(file_exists($path)==true){
|
|||
|
|
unlink($path);
|
|||
|
|
}
|
|||
|
|
if(file_exists($path)==false){
|
|||
|
|
return true;
|
|||
|
|
}else{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function is_utf8($word){//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>UTF8<46><38><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
if(preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true){
|
|||
|
|
return 'utf-8';
|
|||
|
|
}else{
|
|||
|
|
return 'gb2312';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function save($path,$content,$charset=''){//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
if($charset=='utf-8'){
|
|||
|
|
$content=iconv("gbk","utf-8",$content);
|
|||
|
|
}
|
|||
|
|
$f=fopen($path,"wb");
|
|||
|
|
fputs($f, $content);
|
|||
|
|
fclose($f);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
// function view($path,$size){
|
|||
|
|
// if(filesize($path)==0){
|
|||
|
|
// return false;
|
|||
|
|
// }
|
|||
|
|
// if(($data=file_get_contents($path))==false){
|
|||
|
|
// return false;
|
|||
|
|
// }
|
|||
|
|
// if(function_exists('iconv_substr')==true){
|
|||
|
|
// $total_page=iconv_strlen($data,'utf-8')/$size;
|
|||
|
|
// if($total_page<=1) {
|
|||
|
|
// $total_page=1;
|
|||
|
|
// }
|
|||
|
|
// $i=1;
|
|||
|
|
// while($i<($total_page+1)){
|
|||
|
|
// $idata[]=iconv_substr($data,$i*$size-$size,$size,'utf-8');
|
|||
|
|
// $i++;
|
|||
|
|
// }
|
|||
|
|
// return $idata;
|
|||
|
|
// }else{
|
|||
|
|
// return $data;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
function readata($path){//<2F><>ȡ<EFBFBD>ļ<EFBFBD>
|
|||
|
|
if(($data=file_get_contents($path))==false){
|
|||
|
|
return $data=null;
|
|||
|
|
}else{
|
|||
|
|
return $data;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function urlupload($path,$furl){//<2F>ϴ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ļ<EFBFBD>
|
|||
|
|
if(function_exists('curl_init')){
|
|||
|
|
$ch=curl_init();
|
|||
|
|
if(($fp=fopen($path,'w'))==false){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
curl_setopt($ch,CURLOPT_URL,$furl);
|
|||
|
|
curl_setopt($ch,CURLOPT_FILE,$fp);
|
|||
|
|
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
|
|||
|
|
curl_exec($ch);
|
|||
|
|
curl_close($ch);
|
|||
|
|
fclose($fp);
|
|||
|
|
return true;
|
|||
|
|
}else{
|
|||
|
|
$fp=fopen($path,'w');
|
|||
|
|
if(!$fp) return false;
|
|||
|
|
$fp2=fopen($furl,'r');
|
|||
|
|
if(!$fp2) return false;
|
|||
|
|
while(!feof($fp2)) {
|
|||
|
|
fwrite($fp,fread($fp2,8192));
|
|||
|
|
}
|
|||
|
|
fclose($fp2);
|
|||
|
|
fclose($fp);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function is_url($str){
|
|||
|
|
return preg_match ('/^(http|ftp|https|ftps):\/\/([a-z0-9\-_]+\.)+[a-z]{2,5}/i',$str);
|
|||
|
|
}
|
|||
|
|
function setting($url,$p){
|
|||
|
|
if($data=$this->readata($url)){
|
|||
|
|
$data=str_replace(array(' ','$','<?php','?>',"CONFIG['".strtoupper($p)."']=array("),'',$data);
|
|||
|
|
$data=explode(chr(10),$data);
|
|||
|
|
foreach($data as $values){
|
|||
|
|
if(preg_match("/define+/",$values)){
|
|||
|
|
$datb="1|".str_replace(array('//',',','define','(',')',';','"','\''),array('|','|'),$values);
|
|||
|
|
if($this->is_utf8($datb)=='gb2312') $datb=$datb;
|
|||
|
|
$info[]=explode('|',$datb);
|
|||
|
|
}elseif(preg_match("/=>+/",$values)){
|
|||
|
|
$datb="0|".str_replace(array('//','=>','$',';',',','"','\''),array('|','|'),$values);
|
|||
|
|
if($this->is_utf8($datb)=='gb2312') $datb=$datb;
|
|||
|
|
$info[]=explode('|',$datb);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return $info;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
?>
|