//数组编码转换函数
/*
return Array
$in_charset原字符串编码
$out_charset输出字符串编码
$arr传入的数组
*/
function array_iconv($in_charset,$out_charset,$arr){
eval('$resArr = '.iconv($in_charset,$out_charset."//IGNORE",var_export($arr,true)).' ;');
return $resArr;
}
//二维数组排序函数
/*
$arr输入的二位数组
$keys需要排序的字段
$mode是否保持原来的键名,keep为保持、nokeep为重新建立
$type排序方式 asc为升序。desc为降序
*/
function array_sort($arr,$keys,$mode='nokeep',$type='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = iconv('UTF-8', 'GB2312',$v[$keys]);
}
if($type == 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
if($mode=='keep'){
foreach ($keysvalue as $k=>$v){
$new_array[$k] = $arr[$k];
}
}else{
foreach ($keysvalue as $k=>$v){
$new_array[] = $arr[$k];
}
}
return $new_array;
}
//curl获取远程数据 需要开启curl库
/*
$url远程地址
*/
function curl_get_contents($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址
//curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时
curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); //用户访问代理 User-Agent
curl_setopt($ch, CURLOPT_REFERER,_REFERER_); //设置 referer
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
//下载函数
/*
$filename下载文件地址或路径
*/
function download($filename){
if(preg_match("/^http\:\/\//i",$filename)){
header("location:$filename");
}else{
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
$simplename = basename($filename);
header('Content-Disposition: attachment; filename='.$simplename);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
ob_clean();
flush();
readfile($filename);
}
}
//生成随机数
/*
return String
$num生成位数
$mode模式,1为生成大写与数字,2为生成大小写与数字
*/
function randnum($num,$mode=1){
if($mode==1){
$str_abc = '1234567890ABCDEFGHIJKLOMNOPQRSTUVWXYZ';
$str = '';
for($i=0;$i<$num;$i++){
$str .= $str_abc{mt_rand(0,35)};
}
return $str;
$str = '';
}else{
$str_abc = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
$str = '';
for($i=0;$i<$num;$i++){
$str .= $str_abc{mt_rand(0,61)};
}
return $str;
$str = '';
}
}
//中文截取函数
/*
return String
$str传入的字符
$start起始位置
$start结束位置
*/
function cSubstr($str,$start,$len)
{
for ($i = $start; $i < $len; $i++) {
$temp_str = substr($str, 0, 1);
if (ord($temp_str) > 127) {
$i++;
if ($i < $len) {
$new_str[] = substr($str, 0, 3);
$str = substr($str, 3);
}
} else {
$new_str[] = substr($str, 0, 1);
$str = substr($str, 1);
}
return join($new_str);
}
}
使用"自然"算法来比较两个字符串(不区分大小写):
strnatcasecmp() 函数使用一种"自然"算法来比较两个字符串。
在自然算法中,数字 2 小于数字 10。在计算机排序中,10 小于 2,这是因为 10 中的第一个数字小于 2。
注释:strnatcasecmp() 对大小写不敏感。
strnatcasecmp(string1,string2)
返回值: