PHP基础PHP常用的方法 | 积累作者王明昌发布时间2018-10-11复制 '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); } }
2017-11-18PHP函数-数学函数abs 格式 描述 输入 输出 abs() 绝对值 整形/浮点型/字符串/进制数 与输入相对应 实例: $a = -12;//12 $a = -112.02;//11.02 $a = "-123.2"
2018-05-27获取上一级页面的url参考地址:http://www.qdxw.net/xwhtml/384.html 实战代码 从4.php 点击进入5.php 1.上一页地址: http://localhost/box/4.php 2
2017-11-19PHP函数why 提高开发效率 提高代码的重用性 有利于代码的维护 格式 function funName(形参,形参) { 代码块; return; } 函数名格式 函数名不区分大小写 函数名不能以数字开头,
2017-12-16转载 | PHP常用函数总结(180多个)数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 浮点数进一取整 3
2017-11-19PHP基础语法php格式4种形式 1.1 标准式 1.2 短风格 1.3. asp风格 1.4 脚本风格 注: 1.2/1.3需要修改php.in文件 各改为short_open_tag = On asp_tags