PHP常用工具方法集,更新時間? 2018-7-14
<?php
/*** 常用工具方法集* Author: zj*//**
工具總述
1.加密解密
2.生成隨機字符串
3.獲取文件擴展名(后綴)
4.文件大小格式化
5.替換標簽字符
6.列出目錄下的文件名
7.獲取當前頁面URL
8.讓瀏覽器強制下載文件
9.字符串顯示長度,超出使用...顯示
10.獲取客戶端真實IP
11.防止SQL注入,判斷是否有非法字符
12.頁面提示與跳轉
13.計算時長
14.寫入日志文件
16.過濾特殊字符的函數 utf-8可用
17.統計文章字數和圖片數
18.封裝頁面跳轉函數
19.獲取當前文件路徑
20.獲取當前文件目錄
21.獲取當前時間字符串
22.獲取時間戳格式化時間字符串*///1.加密解密,$decrypt:0->加密,1->解密
function encryptDecrypt($key, $string, $decrypt){if($decrypt){$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");return $decrypted;}else{$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));return $encrypted;}
}//2.生成隨機字符串
function generateRandomString($length = 10) {$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';$randomString = '';for ($i = 0; $i < $length; $i++) {$randomString .= $characters[rand(0, strlen($characters) - 1)];}return $randomString;
}//3.獲取文件擴展名(后綴)
function getExtension($filename){$myext = substr($filename, strrpos($filename, '.')); //strrpos:最后位置return str_replace('.','',$myext);
}//4.文件大小格式化
function formatSize($size) {$sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");if ($size == 0) {return('n/a');} else {//log(x,base):指定了可選的參數 base,log() 返回 logbasex ,否則 log() 返回參數 x 的自然對數;//pow(x,y):返回 x 的 y 次方的冪,如x=4,y=2,結果為16//重點獲取$i:1024*1024*1024...級別對數return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]);}
}//5.替換標簽字符
/* 使用方法
$string = 'The {b}anchor text{/b} is the {b}actual word{/b} or words used {br}to describe the link {br}itself';
$replace_array = array('{b}' => '<b>','{/b}' => '</b>','{br}' => '<br />');
echo stringParser($string,$replace_array);*/
function stringParser($string, $replacer){//str_replace對應替換多個字符$result = str_replace(array_keys($replacer), array_values($replacer), $string);return $result;
}//6.列出目錄下的文件名,不列出文件夾名
function listDirFiles($DirPath){if($dir = opendir($DirPath)){while(($file = readdir($dir)) !== false){if(!is_dir($DirPath.$file)){echo "filename: $file<br />";}}}
}//7.獲取當前頁面URL
function curPageURLhost() {$pageURL = 'http';if (!empty($_SERVER['HTTPS'])) {$pageURL .= "s";}$pageURL .= "://"; //拼接if ($_SERVER["SERVER_PORT"] != "80") {$pageURL .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];} else {$pageURL .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];}return $pageURL;
}//7-2.獲取當前頁面URL目錄
function curPageURLaddrCatalog() {$pageURL = curPageURLhost();return $pageURL=substr($pageURL,0, strrpos($pageURL, '/')+1);
}//8.讓瀏覽器強制下載文件-原文件名
function download($filepath){if ((isset($filepath))&&(file_exists($filepath))){header("Content-length: ".filesize($filepath));header('Content-Type: application/octet-stream');header('Content-Disposition: attachment; filename="' . substr($filepath,strrpos($filepath, '/')+1, strlen($filepath)) . '"');readfile("$filepath");} else {echo "文件不存在!";}
}//8.讓瀏覽器強制下載文件-文件重命名
function downloadScel($filepath, $filename){if ((isset($filepath))&&(file_exists($filepath))){header("Content-length: ".filesize($filepath));header('Content-Type: application/octet-stream');header('Content-Disposition: attachment; filename="' . $filename.'.'.getExtension($filepath) . '"');readfile("$filepath");} else {echo "文件不存在!";}
}//9.字符串顯示長度,超出使用...顯示
/*Utf-8、gb2312都支持的漢字截取函數cut_str(字符串, 截取長度, 開始長度, 編碼);編碼默認為 utf-8開始長度默認為 0顯示不能超過多少字符,超出的長度用…表示
*/
function cutStr($string, $sublen, $start = 0, $code = 'UTF-8'){if($code == 'UTF-8'){$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";preg_match_all($pa, $string, $t_string);if(count($t_string[0]) - $start > $sublen){return join('', array_slice($t_string[0], $start, $sublen))."...";}return join('', array_slice($t_string[0], $start, $sublen));}else{$start = $start*2;$sublen = $sublen*2;$strlen = strlen($string);$tmpstr = '';for($i=0; $i<$strlen; $i++){if($i>=$start && $i<($start+$sublen)){if(ord(substr($string, $i, 1))>129){$tmpstr.= substr($string, $i, 2);}else{$tmpstr.= substr($string, $i, 1);}}if(ord(substr($string, $i, 1))>129){$i++;}}if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";return $tmpstr;}
}//10.獲取客戶端真實IP
function getIp() {if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))$ip = getenv("HTTP_CLIENT_IP");elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))$ip = getenv("HTTP_X_FORWARDED_FOR");elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))$ip = getenv("REMOTE_ADDR");elseif (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))$ip = $_SERVER['REMOTE_ADDR'];else$ip = "unknown";return ($ip);
}//11.防止SQL注入,判斷是否有非法字符
function injCheck($sql_str) {$check = preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/', $sql_str);if ($check) {echo '非法字符!!';exit;} else {return $sql_str;}
}//12.頁面提示與跳轉
function message($msgTitle,$message,$jumpUrl){$str = '<!DOCTYPE HTML>';$str .= '<html>';$str .= '<head>';$str .= '<meta charset="utf-8">';$str .= '<title>頁面提示</title>';$str .= '<style type="text/css">';$str .= '*{margin:0; padding:0}a{color:#369; text-decoration:none;}a:hover{text-decoration:underline}body{height:100%; font:14px/18px Tahoma, Arial, sans-serif; color:#424242; background:#fff}.message{width:450px; height:120px; margin:16% auto; border:1px solid #99b1c4; background:#ecf7fb}.message h3{height:28px; line-height:28px; background:#2c91c6; text-align:center; color:#fff; font-size:14px}.msg_txt{padding:10px; margin-top:8px}.msg_txt h4{line-height:26px; font-size:14px}.msg_txt h4.red{color:#f30}.msg_txt p{line-height:22px}';$str .= '</style>';$str .= '</head>';$str .= '<body>';$str .= '<div>';$str .= '<h3>'.$msgTitle.'</h3>';$str .= '<div>';$str .= '<h4>'.$message.'</h4>';$str .= '<p>系統將在 <span style="color:blue;font-weight:bold">3</span> 秒后自動跳轉,如果不想等待,直接點擊 <a href="'.$jumpUrl.'">這里</a> 跳轉</p>';$str .= "<script>setTimeout('location.replace(\'".$jumpUrl."\')',2000)</script>";$str .= '</div>';$str .= '</div>';$str .= '</body>';$str .= '</html>';echo $str;
}//13.計算時長
function changeTimeType($seconds) {if ($seconds > 3600) {$hours = intval($seconds / 3600);$minutes = $seconds % 3600;$time = $hours . ":" . gmstrftime('%M:%S', $minutes);} else {$time = gmstrftime('%H:%M:%S', $seconds);}return $time;
}/*** 14.寫入日志文件* @parm1 : 日志文件名稱* @parm2 : 記錄的信息*/
function logFile($filename, $msg){$str = "[".date("Y-m-d H:i:s",time())."] ".$msg . PHP_EOL;file_put_contents($filename, $str,FILE_APPEND);
}//16.過濾特殊字符的函數 utf-8可用,過濾例如'&'中的'amp;'
function filterSpechars ($string){return preg_replace('/[\x00-\x1F\x7F-\x9F]/u', '', $string);
}/*** 17.統計文章字數和圖片數* 參數:文章內容字符串* 返回:array*/
function countWords($str){$str = trim($str);$pattern = "/\[#img_[0-9]+_[a-z]*_[0-9]+_[a-zA-Z]*/i";#統計圖片數preg_match_all($pattern, $str, $match_arrs);$picCount = count($match_arrs[0]);##增加新的圖片記數方式preg_match_all('/<img /i',$str,$match_arrs);$picCount = $picCount + count($match_arrs[0]);#統計字數$str = preg_replace($pattern, "", $str);$str = preg_replace("/<img([^>].+)>/iU","", $str); ##去掉圖片標簽$str = str_replace(' ','', $str); ##去掉空格$wordCount = mb_strwidth(trim(strip_tags($str)));return array('wordCount'=>$wordCount,'picCount'=>$picCount,);
}/** 18.封裝頁面跳轉函數* @param $url 目標地址* @param $info 提示信息* @param $sec 等待時間* return void
*/
function jump($url,$info=null,$sec=3)
{if(is_null($info)){header("Location:$url");}else{// header("Refersh:$sec;URL=$url");echo"<meta http-equiv=\"refresh\" content=".$sec.";URL=".$url.">";echo $info;}die(); //結束當前腳本運行
}/** 19.獲取當前文件路徑* return path
*/
function getThisPath()
{return __FILE__;
}/** 20.獲取當前文件目錄* 等價方法:getcwd();* return path
*/
function getThisCatalog()
{return __DIR__.'\\';
}/** 21.獲取當前時間字符串* @param 可選參數,格式化* return date
*/
function getNowDateTime($format='Y-m-d H:i:s')
{return date($format);
}/** 22.獲取時間戳格式化時間字符串* @param 時間戳* @param 可選參數,格式化* return date
*/
function getFormatDateTime($timestamp, $format='Y-m-d H:i:s')
{return date($format, $timestamp);
}
?
?
?
持續更新中...
?
?
?
?
?