PHP常用的方法 | 积累
'ok',
'msg' => $msg,
'url' => $url
));
} else {
echo json_encode(array(
'status' => 'ok',
'msg' => $msg
));
}
} else {
if ($url) {
echo json_encode(array(
'status' => 'error',
'msg' => $msg,
'url' => $url
));
} else {
echo json_encode(array(
'status' => 'error',
'msg' => $msg
));
}
}
exit();
}
//新增log日志
function addLog($msg)
{
$array = array();
$array['uid'] = getUserData('id');
$array['action'] = $msg;
$array['query'] = D()->getLastSql();
$array['ip'] = get_client_ip();
$array['ctime'] = time();
D('Log')->add($array);
}
// 单位自动转换函数
function getRealSize($size) {
$kb = 1024; // Kilobyte
$mb = 1024 * $kb; // Megabyte
$gb = 1024 * $mb; // Gigabyte
$tb = 1024 * $gb; // Terabyte
if ($size < $kb) {
return $size . " B";
} else if ($size < $mb) {
return round($size / $kb, 2) . " KB";
} else if ($size < $gb) {
return round($size / $mb, 2) . " MB";
} else if ($size < $tb) {
return round($size / $gb, 2) . " GB";
} else {
return round($size / $tb, 2) . " TB";
}
}
//获取ip地址的实际地区
function get_ip_info($ip = '') {
$url = "http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
$data = json_decode(file_get_contents($url),true);
if($data['code'] === 1){
return 'IPv4地址不符合格式';
}else{
return $data['data']['country'].' '.$data['data']['city'];
}
}
// 转换月份为英文缩写
function trant_eng($m){
if($m == 01){
return 'Jan';
}elseif($m == 02){
return 'Feb';
}elseif($m == 03){
return 'Mar';
}elseif($m == 04){
return 'Apr';
}elseif($m == 05){
return 'May';
}elseif($m == 06){
return 'Jun';
}elseif($m == 07){
return 'Jul';
}elseif($m == 08){
return 'Aug';
}elseif($m == 09){
return 'Sep';
}elseif($m == 10){
return 'Oct';
}elseif($m == 11){
return 'Nov';
}elseif($m == 12){
return 'Dec';
}
}
//文本输入
function text_in($str){
$str=strip_tags($str,'
');
$str = str_replace(" ", " ", $str);
$str = str_replace("\n", "
", $str);
if(!get_magic_quotes_gpc()) {
$str = addslashes($str);
}
return $str;
}
//文本输出
function text_out($str){
$str = str_replace(" ", " ", $str);
$str = str_replace("
", "\n", $str);
$str = stripslashes($str);
return $str;
}
// 获取客户端IP地址
function get_client_ip(){
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";
}
if (preg_match('#^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $ip)) {
$ip_array = explode('.', $ip);
if($ip_array[0]<=255 && $ip_array[1]<=255 && $ip_array[2]<=255 && $ip_array[3]<=255){
return $ip;
}
}
return "unknown";
}
/**
* 字符串截取,支持中文和其他编码
* @static
* @access public
* @param string $str 需要转换的字符串
* @param string $start 开始位置
* @param string $length 截取长度
* @param string $charset 编码格式
* @param string $suffix 截断显示字符
* @return string
*/
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) {
if(function_exists("mb_substr"))
$slice = mb_substr($str, $start, $length, $charset);
elseif(function_exists('iconv_substr')) {
$slice = iconv_substr($str,$start,$length,$charset);
if(false === $slice) {
$slice = '';
}
}else{
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
}
return $suffix ? $slice.'...' : $slice;
}
// 检查字符串是否是UTF8编码,是返回true,否则返回false
function is_utf8($string){
if( !empty($string) ) {
$ret = json_encode( array('code'=>$string) );
if( $ret=='{"code":null}') {
return false;
}
}
return true;
}
// 自动转换字符集 支持数组转换
function auto_charset($fContents,$from='gbk',$to='utf-8'){
$from = strtoupper($from)=='UTF8'? 'utf-8':$from;
$to = strtoupper($to)=='UTF8'? 'utf-8':$to;
if( strtoupper($from) === strtoupper($to) || empty($fContents) || (is_scalar($fContents) && !is_string($fContents)) ){
//如果编码相同或者非字符串标量则不转换
return $fContents;
}
if(is_string($fContents) ) {
if(function_exists('mb_convert_encoding')){
return mb_convert_encoding ($fContents, $to, $from);
}elseif(function_exists('iconv')){
return iconv($from,$to,$fContents);
}else{
return $fContents;
}
}
elseif(is_array($fContents)){
foreach ( $fContents as $key => $val ) {
$_key = auto_charset($key,$from,$to);
$fContents[$_key] = auto_charset($val,$from,$to);
if($key != $_key )
unset($fContents[$key]);
}
return $fContents;
}
else{
return $fContents;
}
}
//加密函数,可用cp_decode()函数解密,$data:待加密的字符串或数组;$key:密钥;$expire 过期时间
function cp_encode($data,$key='',$expire = 0)
{
$string=serialize($data);
$ckey_length = 4;
$sale = 'zf';
$key = md5($key.$sale);
$keya = md5(substr($key, 0, 16).$sale);
$keyb = md5(substr($key, 16, 16).$sale);
$keyc = substr(md5(microtime()), -$ckey_length);
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = sprintf('%010d', $expire ? $expire + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++)
{
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
for($j = $i = 0; $i < 256; $i++)
{
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++)
{
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
return $keyc.str_replace('=', '', base64_encode($result));
}
//cp_encode之后的解密函数,$string待解密的字符串,$key,密钥
function cp_decode($string,$key='')
{
$ckey_length = 4;
$sale = 'zf';
$key = md5($key.$sale);
$keya = md5(substr($key, 0, 16).$sale);
$keyb = md5(substr($key, 16, 16).$sale);
$keyc = substr($string, 0, $ckey_length);
$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);
$string = base64_decode(substr($string, $ckey_length));
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++)
{
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
for($j = $i = 0; $i < 256; $i++)
{
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for($a = $j = $i = 0; $i < $string_length; $i++)
{
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return unserialize(substr($result, 26));
}
else
{
return '';
}
}
//遍历删除目录和目录下所有文件
function del_dir($dir){
if (!is_dir($dir)){
return false;
}
$handle = opendir($dir);
while (($file = readdir($handle)) !== false){
if ($file != "." && $file != ".."){
is_dir("$dir/$file")? del_dir("$dir/$file"):@unlink("$dir/$file");
}
}
if (readdir($handle) == false){
closedir($handle);
@rmdir($dir);
}
}
本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。