php下dat函数e,PHP 常用函数记录 一
遞歸創建目錄
/**
* 遞歸創建目錄
* @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;
}
################# 使用實例 #######################
echo mkdirs('aaa/bbb/ccc/ddd/');
mb_substr系列函數截取字符串
/**
* 截取中文字符串
* @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){
# 對英文或中文字符都表示一個單位
$str = mb_strcut($string, $start, $length,'utf-8');
# 對中文字符是3個單位,英文是1個單位
$str = mb_substr($string, $start, $length,'utf-8');
return $str.'...';
}else{
return $string;
}
}
################# 使用實例 #######################
echo getSubstr('這樣ABc來我的abc字符串就不會有亂碼^_^', 5);
exit;
字節單位換算函數
/**
* 字節單位換算函數
* @param [type] $size [資源大小]
* @param integer $digits [保留小數位]
* @return [type] [description]
*/
function size2mb($size,$digits=2)
{
$unit = array('','K','M','G','T','P'); //單位數組,是必須1024進制依次的哦。
$base = 1024; //對數的基數
$i = floor(log($size,$base)); //字節數對1024取對數,值向下取整。
return round($size/pow($base,$i),$digits).' '.$unit[$i] . 'B';
}
/**
* 容量單位計算,支持定義小數保留長度;定義起始和目標單位,或按1024自動進位
*
* @param int $size,容量計數
* @param type $unit,容量計數單位,默認為字節
* @param type $decimals,小數點后保留的位數,默認保留一位
* @param type $targetUnit,轉換的目標單位,默認自動進位
* @return type 返回符合要求的帶單位結果
*/
function fileSizeConv($size, $unit = 'B', $decimals = 2, $targetUnit = 'auto')
{
$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');
$theUnit = array_search(strtoupper($unit), $units); //初始單位是哪個
//判斷是否自動計算,
if ($targetUnit != 'auto')
$targetUnit = array_search(strtoupper($targetUnit), $units);
//循環計算
while ($size >= 1024) {
$size/=1024;
$theUnit++;
if ($theUnit == $targetUnit)//已符合給定則退出循環吧!
break;
}
return sprintf("%1\$.{$decimals}f", $size) . $units[$theUnit];
}
################# 使用實例 #######################
echo size2mb(10240000900);
echo '
';
echo fileSizeConv(10240000900);
exit;
獲取頁面URL地址
/**
* 獲取頁面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'];
}
設置登錄成功返回頁地址
/**
* 設置返回頁地址
*/
function setReturnUrl()
{
$return_url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
setcookie('returnurl', $return_url,time()+3600, '/', ".xxxx.com");
}
顯示友好的時間格式
/**
* [顯示友好的時間格式 xx分鐘前 xx小時前 xx天 超過3天顯示正常時間]
* @param [type] $date [description]
* @return [type] [description]
*/
function dataStr($date){
if((time()-$date)<60*10){
//十分鐘內
echo '剛剛';
}elseif(((time()-$date)<60*60)&&((time()-$date)>=60*10)){
//超過十分鐘少于1小時
$s = floor((time()-$date)/60);
echo $s."分鐘前";
}elseif(((time()-$date)<60*60*24)&&((time()-$date)>=60*60)){
//超過1小時少于24小時
$s = floor((time()-$date)/60/60);
echo $s."小時前";
}elseif(((time()-$date)<60*60*24*3)&&((time()-$date)>=60*60*24)){
//超過1天少于3天內
$s = floor((time()-$date)/60/60/24);
echo $s."天前";
}else{
//超過3天
echo date("Y/m/d",$date);
}
}
/**
* 顯示友好的時間格式
*
* @param [type] $time [description]
* @return [type] [description]
*/
function formatTime($time)
{
//獲取今天凌晨的時間戳
$day = strtotime(date('Y-m-d',time()));
//獲取昨天凌晨的時間戳
$pday = strtotime(date('Y-m-d',strtotime('-1 day')));
//獲取現在的時間戳
$nowtime = time();
$tc = $nowtime-$time;
if($time
$str = date('Y-m-d H:i:s',$time);
}elseif($time$pday){
$str = "昨天";
}elseif($tc>60*60){
$str = floor($tc/(60*60))."小時前";
}elseif($tc>60){
$str = floor($tc/60)."分鐘前";
}else{
$str = "剛剛";
}
return $str;
}
/**
* 顯示友好的時間格式
*
* @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.'小時前 '.$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;
}
################# 使用實例 #######################
echo dataStr(time()-200000);
echo '
';
echo formatTime(time()-200000);
echo '
';
echo transfer_time(time()-200000);
創建頭像存放路徑
/**
* 創建資源存放路徑
* 格式: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";
}
################# 使用實例 #######################
echo createSavePath(136);
創建安全下載地址
/**
* 創建安全下載地址
* @param $fileName
* @param int $show
* @return string
*/
function downUrl($fileName, $show = 1)
{
$expired = time() + (3600 * 1); // 過期時間
$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;
}
防止表單注入
/**
* 防止表單注入
* 顯示的時候要用 stripslashes() 去掉反斜杠
* stripslashes()了,它能把addslashes()處理時自動加上去的(反斜杠)\去掉
* @param $str
* @return string
*/
function formSafe($str)
{
$str = strip_tags($str); //去掉html標簽
if(!get_magic_quotes_gpc()) //判斷設置是否開啟 只有0和1兩種情況
{
$str = addslashes($str); //轉換sql語句特殊字符
}
return $str;
}
數組鍵值排序函數
/**
* 數組鍵值排序
* @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;
}
################# 使用實例 #######################
$aaa = array(
['key'=>10, 'name'=>'aaaaaaaaaa'],
['key'=>4, 'name'=>'sssssssssssss'],
['key'=>7, 'name'=>'cccccccccccccccc'],
['key'=>22, 'name'=>'ddddddddddddddddd'],
['key'=>67, 'name'=>'ffffffffffffffffffffffff'],
['key'=>2, 'name'=>'ooooooooooooooooooo'],
);
$aaas = arrayKeySort($aaa, 'key');
echo '
';print_r($aaas);
獲取系統真實IP地址
/**
* 獲取系統真實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;
}
################# 使用實例 #######################
echo getRealIP();
FTP操作類 [ 拷貝、移動、刪除文件/創建目錄]
/**
* 作用:FTP操作類( 拷貝、移動、刪除文件/創建目錄 )
* 時間:2016年9月29日18:45:18
* 作者:YPHP
* QQ:418250505
*/
class Ftp
{
public $off; // 返回操作狀態(成功/失敗)
public $conn_id; // FTP連接
/**
* 方法:FTP連接
* @FTP_HOST -- FTP主機
* @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服務器連接失敗");
@ftp_login($this->conn_id, $FTP_USER, $FTP_PASS) or die("FTP服務器登陸失敗");
@ftp_pasv($this->conn_id, 1); // 打開被動模擬
}
/**
* 方法:上傳文件
* @path -- 本地路徑
* @newpath -- 上傳路徑
* @type -- 若目標目錄不存在則新建
*/
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 "文件上傳失敗,請檢查權限及路徑是否正確!";
}
/**
* 方法:移動文件
* @path -- 原路徑
* @newpath -- 新路徑
* @type -- 若目標目錄不存在則新建
*/
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 "文件移動失敗,請檢查權限及原路徑是否正確!";
}
/**
* 方法:復制文件
* 說明:由于FTP無復制命令,本方法變通操作為:下載后再上傳到新的路徑
* @path -- 原路徑
* @newpath -- 新路徑
* @type -- 若目標目錄不存在則新建
*/
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 "文件復制失敗,請檢查權限及原路徑是否正確!";
$this->up_file($downpath, $newpath, $type);
}
/**
* 方法:刪除文件
* @path -- 路徑
*/
public function delFile($path)
{
$this->off = @ftp_delete($this->conn_id, $path);
if (!$this->off) echo "文件刪除失敗,請檢查權限及路徑是否正確!";
}
/**
* 方法:生成目錄
* @path -- 路徑
*/
protected function createMkdir($path)
{
$path_arr = explode('/', $path); // 取目錄數組
$file_name = array_pop($path_arr); // 彈出文件名
$path_div = count($path_arr); // 取層數
foreach ($path_arr as $val) // 創建目錄
{
if (@ftp_chdir($this->conn_id, $val) == FALSE) {
$tmp = @ftp_mkdir($this->conn_id, $val);
if ($tmp == FALSE) {
echo "目錄創建失敗,請檢查權限及路徑是否正確!";
exit;
}
@ftp_chdir($this->conn_id, $val);
}
}
for ($i = 1; $i = $path_div; $i++) // 回退到根
{
@ftp_cdup($this->conn_id);
}
}
/**
* 方法:關閉FTP連接
*/
public function close()
{
@ftp_close($this->conn_id);
}
}
################# 使用實例 #######################
$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'); // 移動文件
$ftp->copyFile('a/cc.txt', 'a/b/dd.txt'); // 復制文件
$ftp->delFile('a/b/dd.txt'); // 刪除文件
$ftp->close(); // 關閉FTP連接
總結
以上是生活随笔為你收集整理的php下dat函数e,PHP 常用函数记录 一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 不刷新提交,提交表单而不刷新页面
- 下一篇: centeros php pgsql,c