遞歸創(chuàng)建目錄
/** * 遞歸創(chuàng)建目錄 * @param [type] $dir [description] * @return [type] [description] */ function mkdirs($dir) { if(!is_dir($dir)){ if(!mkdirs(dirname($dir))){ return false; } if(!mkdir($dir, 0777)){ return false; } else { chmod($dir, 0777); } } return true; } ################# 使用實(shí)例 ####################### echo mkdirs("aaa/bbb/ccc/ffffd/");mb_substr系列函數(shù)截取字符串
/** * 截取中文字符串 * @param [type] $string [截取字符串] * @param integer $length [截取長度] * @param integer $start [開始位置] * @return [type] [description] */ function getSubstr($string, $length = 10, $start = 0) { if(mb_strlen($string,"utf-8")>$length){ # 對英文或中文字符都表示一個(gè)單位 $str = mb_strcut($string, $start, $length,"utf-8"); # 對中文字符是3個(gè)單位,英文是1個(gè)單位 $str = mb_substr($string, $start, $length,"utf-8"); return $str."..."; }else{ return $string; } } ################# 使用實(shí)例 ####################### echo getSubstr("這樣ABc來我的abc字符串就不會(huì)有亂碼^_^", 5); exit;字節(jié)單位換算函數(shù)
/** * 字節(jié)單位換算函數(shù) * @param [type] $size [資源大小] * @param integer $digits [保留小數(shù)位] * @return [type] [description] */ function size2mb($size,$digits=2) { $unit = array("","K","M","G","T","P"); //單位數(shù)組,是必須1024進(jìn)制依次的哦。 $base = 1024; //對數(shù)的基數(shù) $i = floor(log($size,$base)); //字節(jié)數(shù)對1024取對數(shù),值向下取整。 return round($size/pow($base,$i),$digits)." ".$unit[$i] . "B"; } /** * 容量單位計(jì)算,支持定義小數(shù)保留長度;定義起始和目標(biāo)單位,或按1024自動(dòng)進(jìn)位 * * @param int $size,容量計(jì)數(shù) * @param type $unit,容量計(jì)數(shù)單位,默認(rèn)為字節(jié) * @param type $decimals,小數(shù)點(diǎn)后保留的位數(shù),默認(rèn)保留一位 * @param type $targetUnit,轉(zhuǎn)換的目標(biāo)單位,默認(rèn)自動(dòng)進(jìn)位 * @return type 返回符合要求的帶單位結(jié)果 */ function fileSizeConv($size, $unit = "B", $decimals = 2, $targetUnit = "auto") { $units = array("B", "KB", "MB", "GB", "TB", "PB", "EB"); $theUnit = array_search(strtoupper($unit), $units); //初始單位是哪個(gè) //判斷是否自動(dòng)計(jì)算, if ($targetUnit != "auto") $targetUnit = array_search(strtoupper($targetUnit), $units); //循環(huán)計(jì)算 while ($size >= 1024) { $size/=1024; $theUnit++; if ($theUnit == $targetUnit)//已符合給定則退出循環(huán)吧! break; } return sprintf("%1$.{$decimals}f", $size) . $units[$theUnit]; } ################# 使用實(shí)例 ####################### echo size2mb(10240000900); echo "獲取頁面URL地址
"; echo fileSizeConv(10240000900); exit;
/** * 獲取頁面URL地址 * @return [type] [description] */ function getUrl(){ $url="http://www.xxxx.com"; if(isset($_SERVER["REQUEST_URI"])){ $url.=$_SERVER["REQUEST_URI"]; } else{ $url.=$_SERVER["PHP_SELF"]; if(!empty($_SERVER["QUERY_STRING"])){ $url.="?".$_SERVER["QUERY_STRING"]; } } return $url; }獲取上頁地址
/** * 獲取上頁地址 * @return [type] [description] */ function getReferer() { return $_SERVER["HTTP_REFERER"]; }設(shè)置登錄成功返回頁地址
/** * 設(shè)置返回頁地址 */ function setReturnUrl() { $return_url = "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; setcookie("returnurl", $return_url,time()+3600, "/", ".xxxx.com"); }顯示友好的時(shí)間格式
/** * [顯示友好的時(shí)間格式 xx分鐘前 xx小時(shí)前 xx天 超過3天顯示正常時(shí)間] * @param [type] $date [description] * @return [type] [description] */ function dataStr($date){ if((time()-$date)<60*10){ //十分鐘內(nèi) echo "剛剛"; }elseif(((time()-$date)<60*60)&&((time()-$date)>=60*10)){ //超過十分鐘少于1小時(shí) $s = floor((time()-$date)/60); echo $s."分鐘前"; }elseif(((time()-$date)<60*60*24)&&((time()-$date)>=60*60)){ //超過1小時(shí)少于24小時(shí) $s = floor((time()-$date)/60/60); echo $s."小時(shí)前"; }elseif(((time()-$date)<60*60*24*3)&&((time()-$date)>=60*60*24)){ //超過1天少于3天內(nèi) $s = floor((time()-$date)/60/60/24); echo $s."天前"; }else{ //超過3天 echo date("Y/m/d",$date); } } /** * 顯示友好的時(shí)間格式 * * @param [type] $time [description] * @return [type] [description] */ function formatTime($time) { //獲取今天凌晨的時(shí)間戳 $day = strtotime(date("Y-m-d",time())); //獲取昨天凌晨的時(shí)間戳 $pday = strtotime(date("Y-m-d",strtotime("-1 day"))); //獲取現(xiàn)在的時(shí)間戳 $nowtime = time(); $tc = $nowtime-$time; if($time<$pday){ $str = date("Y-m-d H:i:s",$time); }elseif($time<$day && $time>$pday){ $str = "昨天"; }elseif($tc>60*60){ $str = floor($tc/(60*60))."小時(shí)前"; }elseif($tc>60){ $str = floor($tc/60)."分鐘前"; }else{ $str = "剛剛"; } return $str; } /** * 顯示友好的時(shí)間格式 * * @param [type] $time [description] * @return [type] [description] */ function transfer_time($time) { $rtime = date("m-d H:i",$time); $htime = date("H:i",$time); $time = time() - $time; if ($time < 60) { $str = "剛剛"; } elseif ($time < 60 * 60) { $min = floor($time/60); $str = $min."分鐘前"; } elseif ($time < 60 * 60 * 24) { $h = floor($time/(60*60)); $str = $h."小時(shí)前 ".$htime; } elseif ($time < 60 * 60 * 24 * 3) { $d = floor($time/(60*60*24)); if($d==1) $str = "昨天 ".$rtime; else $str = "前天 ".$rtime; } else { $str = $rtime; } return $str; } ################# 使用實(shí)例 ####################### echo dataStr(time()-200000); echo "創(chuàng)建頭像存放路徑
"; echo formatTime(time()-200000); echo "
"; echo transfer_time(time()-200000);
/** * 創(chuàng)建資源存放路徑 * 格式:000/00/01/36_middle.jpg * * @param $uid * @param string $size * @return string */ function createSavePath($saveId, $size = "") { $size = in_array($size, array("big", "middle", "small")) ? $size : "middle"; $saveId = abs(intval($saveId)); $saveId = sprintf("%09d", $saveId); $dir1 = substr($saveId, 0, 3); $dir2 = substr($saveId, 3, 2); $dir3 = substr($saveId, 5, 2); return "{$dir1}/{$dir2}/{$dir3}/".substr($saveId, -2)."_{$size}.jpg"; } ################# 使用實(shí)例 ####################### echo createSavePath(136);創(chuàng)建安全下載地址
/** * 創(chuàng)建安全下載地址 * @param $fileName * @param int $show * @return string */ function downUrl($fileName, $show = 1) { $expired = time() + (3600 * 1); // 過期時(shí)間 $secret = "ADFO9834RH94"; // salt $md5_secret = base64_encode(md5("{$secret}{$fileName}{$expired}", true)); $md5_secret = str_replace("=", "", strtr($md5_secret, "+/", "-_")); $down_url = "http://www.xxxx.com{$fileName}?st={$md5_secret}&e={$expired}"; if ($show == 1) { die("" . $down_url . ""); } elseif ($show == 2) { return $down_url; exit; } header("Content-type:application/zip"); header("location:{$down_url}"); exit; }防止表單注入
/** * 防止表單注入 * 顯示的時(shí)候要用 stripslashes() 去掉反斜杠 * stripslashes()了,它能把a(bǔ)ddslashes()處理時(shí)自動(dòng)加上去的(反斜杠)去掉 * @param $str * @return string */ function formSafe($str) { $str = strip_tags($str); //去掉html標(biāo)簽 if(!get_magic_quotes_gpc()) //判斷設(shè)置是否開啟 只有0和1兩種情況 { $str = addslashes($str); //轉(zhuǎn)換sql語句特殊字符 } return $str; }數(shù)組鍵值排序函數(shù)
/** * 數(shù)組鍵值排序 * @param $arr * @param $keys * @param string $type * @return array */ function arrayKeySort($arr,$keys,$type="asc"){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == "asc"){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); $i = 0; foreach ($keysvalue as $k=>$v){ $new_array[$i] = $arr[$k]; $i++; } return $new_array; } ################# 使用實(shí)例 ####################### $aaa = array( ["key"=>10, "name"=>"aaaaaaaaaa"], ["key"=>4, "name"=>"sssssssssssss"], ["key"=>7, "name"=>"cccccccccccccccc"], ["key"=>22, "name"=>"ffffdffffdffffdffffdffffddd"], ["key"=>67, "name"=>"ffffffffffffffffffffffff"], ["key"=>2, "name"=>"ooooooooooooooooooo"], ); $aaas = arrayKeySort($aaa, "key"); echo ""; print_r($aaas);獲取系統(tǒng)真實(shí)IP地址/** * 獲取系統(tǒng)真實(shí)IP地址 * @return string */ function getRealIP(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER["REMOTE_ADDR"]) && $_SERVER["REMOTE_ADDR"] && strcasecmp($_SERVER["REMOTE_ADDR"], "unknown")) $ip = $_SERVER["REMOTE_ADDR"]; else $ip = "unknown"; return $ip; } ################# 使用實(shí)例 ####################### echo getRealIP();FTP操作類 [ 拷貝、移動(dòng)、刪除文件/創(chuàng)建目錄]/** * 作用:FTP操作類( 拷貝、移動(dòng)、刪除文件/創(chuàng)建目錄 ) * 時(shí)間:2016年9月29日18:45:18 * 作者:YPHP * QQ:418250505 */ class Ftp { public $off; // 返回操作狀態(tài)(成功/失敗) public $conn_id; // FTP連接 /** * 方法:FTP連接 * @FTP_HOST -- FTP主機(jī) * @FTP_PORT -- 端口 * @FTP_USER -- 用戶名 * @FTP_PASS -- 密碼 */ public function __construct($FTP_HOST, $FTP_PORT, $FTP_USER, $FTP_PASS) { $this->conn_id = @ftp_connect($FTP_HOST, $FTP_PORT) or die("FTP服務(wù)器連接失敗"); @ftp_login($this->conn_id, $FTP_USER, $FTP_PASS) or die("FTP服務(wù)器登陸失敗"); @ftp_pasv($this->conn_id, 1); // 打開被動(dòng)模擬 } /** * 方法:上傳文件 * @path -- 本地路徑 * @newpath -- 上傳路徑 * @type -- 若目標(biāo)目錄不存在則新建 */ public function upFile($path, $newpath, $type = true) { if ($type) $this->createMkdir($newpath); $this->off = @ftp_put($this->conn_id, $newpath, $path, FTP_BINARY); if (!$this->off) echo "文件上傳失敗,請檢查權(quán)限及路徑是否正確!"; } /** * 方法:移動(dòng)文件 * @path -- 原路徑 * @newpath -- 新路徑 * @type -- 若目標(biāo)目錄不存在則新建 */ public function moveFile($path, $newpath, $type = true) { if ($type) $this->createMkdir($newpath); $this->off = @ftp_rename($this->conn_id, $path, $newpath); if (!$this->off) echo "文件移動(dòng)失敗,請檢查權(quán)限及原路徑是否正確!"; } /** * 方法:復(fù)制文件 * 說明:由于FTP無復(fù)制命令,本方法變通操作為:下載后再上傳到新的路徑 * @path -- 原路徑 * @newpath -- 新路徑 * @type -- 若目標(biāo)目錄不存在則新建 */ public function copyFile($path, $newpath, $type = true) { $downpath = "c:/tmp.dat"; $this->off = @ftp_get($this->conn_id, $downpath, $path, FTP_BINARY);// 下載 if (!$this->off) echo "文件復(fù)制失敗,請檢查權(quán)限及原路徑是否正確!"; $this->up_file($downpath, $newpath, $type); } /** * 方法:刪除文件 * @path -- 路徑 */ public function delFile($path) { $this->off = @ftp_delete($this->conn_id, $path); if (!$this->off) echo "文件刪除失敗,請檢查權(quán)限及路徑是否正確!"; } /** * 方法:生成目錄 * @path -- 路徑 */ protected function createMkdir($path) { $path_arr = explode("/", $path); // 取目錄數(shù)組 $file_name = array_pop($path_arr); // 彈出文件名 $path_div = count($path_arr); // 取層數(shù) foreach ($path_arr as $val) // 創(chuàng)建目錄 { if (@ftp_chdir($this->conn_id, $val) == FALSE) { $tmp = @ftp_mkdir($this->conn_id, $val); if ($tmp == FALSE) { echo "目錄創(chuàng)建失敗,請檢查權(quán)限及路徑是否正確!"; exit; } @ftp_chdir($this->conn_id, $val); } } for ($i = 1; $i = $path_div; $i++) // 回退到根 { @ftp_cdup($this->conn_id); } } /** * 方法:關(guān)閉FTP連接 */ public function close() { @ftp_close($this->conn_id); } } ################# 使用實(shí)例 ####################### $ftp = new class_ftp("192.168.100.143", 21, "user", "pwd"); // 打開FTP連接 $ftp->upFile("aa.txt", "a/b/c/cc.txt"); // 上傳文件 $ftp->moveFile("a/b/c/cc.txt", "a/cc.txt"); // 移動(dòng)文件 $ftp->copyFile("a/cc.txt", "a/b/dd.txt"); // 復(fù)制文件 $ftp->delFile("a/b/dd.txt"); // 刪除文件 $ftp->close(); // 關(guān)閉FTP連接
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/30505.html
摘要:加密解密類由于開始廢棄傳統(tǒng)的加密函數(shù)而改用,因此該類支持的版本為簡易加解密類通用秘鑰所有可用的加密類型可參考構(gòu)造函數(shù)加密類型。 加密解密類 由于 PHP7.1 開始廢棄傳統(tǒng)的加密函數(shù) mcrypt_encrypt 而改用 openssl_encrypt,因此該類支持的 PHP 版本為: (PHP 5 >= 5.3.0, PHP 7)
摘要:的功能提供了很多函數(shù),需要將這些函數(shù)按特定的步驟組合到一起,我們先來了解下建立請求的基本步驟。代碼如下我們可以通設(shè)置函數(shù)的不同參數(shù),可以獲得不同的結(jié)果,這也是擴(kuò)展的強(qiáng)大之處。函數(shù)的常用參數(shù)選項(xiàng)具體可查閱官方文檔,此處就不列舉。 PHP的curl功能提供了很多函數(shù),需要將這些函數(shù)按特定的步驟組合到一起,我們先來了解下PHP建立curl請求的基本步驟。 $ch = curl_init()...
摘要:可以在入口文件中定義,然后新建文件夾,達(dá)到將應(yīng)用配置放到該文件的目的,這樣方便將配置進(jìn)行統(tǒng)一管理。動(dòng)態(tài)配置返回?cái)?shù)據(jù)類型功能同上張三男請求成功 ThinkPHP5 ThinkPHP是一個(gè)免費(fèi)開源的、快速簡單的、面向?qū)ο蟮?、輕量級PHP開發(fā)框架。 為什么選擇ThinkPHP5? ThinkPHP5采用了全新的架構(gòu)思想; 優(yōu)化了核心是一個(gè)顛覆性的版本; 支持composer方式安裝; 對...
摘要:將返回通過回調(diào)真值測試的第一個(gè)項(xiàng)的鍵。方法將集合分割為多個(gè)給定大小的較小集合。它可用于在任何位置的調(diào)試和查找集合內(nèi)的內(nèi)容。方法用于遍歷整個(gè)集合。這對集合同樣有效。它將導(dǎo)致由第二個(gè)參數(shù)的值作為鍵的集合。它接受回調(diào)并傳遞并將集合傳遞給它。 showImg(https://segmentfault.com/img/remote/1460000018924972); 文章轉(zhuǎn)自:https://...
摘要:文件函數(shù)庫文件目錄函數(shù)庫為核心函數(shù)庫,可以通過其提供的完成對于文件及目錄的常用操作。 文件函數(shù)庫 文件、目錄函數(shù)庫為PHP核心函數(shù)庫,可以通過其提供的API完成對于文件及目錄的常用操作。 文件信息相關(guān)的API /* * 文件信息相關(guān)API * filetype(), filesize(), filectime(),filemtime(), fileatime() */ $dir...
閱讀 2742·2021-11-24 10:23
閱讀 1153·2021-11-17 09:33
閱讀 2503·2021-09-28 09:41
閱讀 1409·2021-09-22 15:55
閱讀 3641·2019-08-29 16:32
閱讀 1903·2019-08-29 16:25
閱讀 1056·2019-08-29 11:06
閱讀 3421·2019-08-29 10:55