限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。
当前位置:首页 >开发者 >PHP笔记 >PHP基础

PHP常用的方法 | 积累

分类:PHP基础时间:2018-10-11浏览:2185
 '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); } }
本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。
0/500
Share your thoughts respectfully.