createCommand()->getRawSql();
return $newSql;
}
//微擎用户密码加密方式 获取用户密码加密后的密码
function getPassword($password){
$salt=Yii::$app->params['salt'];
$authkeys=Yii::$app->params['authkey'];
$new_password = sha1("{$password}-{$salt}-{$authkeys}");
return $new_password;
}
//查询条件筛选
function filter_array($array){
if(!is_array($array)){
throw new Exception('must a array','110');
}
foreach ($array as $k=>$v){
if(!$v||$v=='null'){
unset($array[$k]);
}
}
return $array;
}
/*****************************************************
* 拼装的curl万能函数
*****************************************************/
//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
function curl_request($url,$post_data=null){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// 执行后不直接打印出来
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 设置请求方式为post
curl_setopt($ch, CURLOPT_POST, true);
// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
// 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// 不从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
function randomAESKey($length, $chars = '0123456789') {
$hash = '';
$max = strlen($chars) - 1;
for ($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
/*****************************************************
* 生成随机字符串 - 最长为32位字符串
*****************************************************/
function wxNonceStr($length = 16, $type = FALSE,$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") {
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
if($type == TRUE){
return strtoupper(md5(time() . $str));
}
else {
return $str;
}
}
/**
* 将xml转为array
* @param string $xml
* @throws WxPayException
*/
function FromXml($xml){
// if(!$xml){
// throw new Exception("xml数据异常!");
// }
//将XML转为array
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $arr;
}
//遍历文件夹的文件
/**
* PHP高效遍历文件夹(大量文件不会卡死)
* @param string $path 目录路径
* @param integer $level 目录深度
*/
function list_file($dir) {
$files = [];
if(@$handle = opendir($dir)) {
while(($file = readdir($handle)) !== false) {
if($file != ".." && $file != ".") {
if(is_dir($dir . "/" . $file)) { //如果是子文件夹,进行递归
$files[$file] = list_file($dir . "/" . $file);
} else {
$files[] = $file;
}
}
}
closedir($handle);
}
return $files;
}
//对象转数组
function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
}
if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = object_array($value);
}
}
return $array;
}
//短信验证码生成规则
function generate_code($length = 6) {
$min = pow(10 , ($length - 1));
$max = pow(10, $length) - 1;
return rand($min, $max);
}
//curl远程下载压缩包
function getFile($url, $save_dir = '', $filename = '', $type = 0) {
if (trim($url) == '') {
return false;
}
if (trim($save_dir) == '') {
$save_dir = './';
}
if (0 !== strrpos($save_dir, '/')) {
$save_dir.= '/';
}
//创建保存目录
if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
return false;
}
//获取远程文件所采用的方法
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$content = curl_exec($ch);
if(curl_error($ch)){
echo json_encode(['code'=>2,'msg'=>curl_error($ch)]);die;
}
//文件大小
$fp2 = @fopen($save_dir . $filename, 'a');
fwrite($fp2, $content);
fclose($fp2);
unset($content, $url);
return array(
'file_name' => $filename,
'save_path' => $save_dir . $filename
);
}
// 生成纯字母字符串函数
function rand_string($length) {
$randstr = "";
for ($i = 0; $i < (int) $length; $i ++) {
$randnum = mt_rand(0, 51);
if ($randnum < 26) {
$randstr .= chr($randnum + 65); // A-Z之间字符
} else {
$randstr .= chr($randnum + 71); // a-z之间字符
}
}
return $randstr;
}
//获取访客ip
function getIps(){
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
foreach ($arr as $ip) {
$ip = trim($ip);
if ($ip != 'unknown') {
$realip = $ip;
break;
}
}
} else if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else if (isset($_SERVER['REMOTE_ADDR'])) {
$realip = $_SERVER['REMOTE_ADDR'];
} else {
$realip = '0.0.0.0';
}
} else if (getenv('HTTP_X_FORWARDED_FOR')) {
$realip = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('HTTP_CLIENT_IP')) {
$realip = getenv('HTTP_CLIENT_IP');
} else {
$realip = getenv('REMOTE_ADDR');
}
preg_match('/[\\d\\.]{7,15}/', $realip, $onlineip);
$realip = (!empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0');
return $realip;
}
function randoms($length){
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
function axios_request(){
if(Yii::$app->request->isPost){
$postData = file_get_contents('php://input');
$requests = !empty($postData) ? json_decode($postData, true) : array();
$requests=$requests?$requests:$_POST;
return $requests;
}else{
return Yii::$app->request->get();
}
}
//设置session
function setSession($key,$value){
Yii::$app->session->set($key,$value);
}
//获取session
function getSession($key){
$data=Yii::$app->session->get($key);
return $data;
}
//$pathname保存的路径 $filename提交的图片文件参数名
function uploadImage($filename,$pathname=null){
$pathname=$pathname?:date('Y') . "/" . date('m') . "/" . date('d');
$returnPath = '';
$path = 'web/static/'.$pathname;
if (!file_exists($path)) {
mkdir($path, 0777,true);
chmod($path, 0777);
}
$name=date("YmdHis") .rand(1111,9999). '.png';
//$patch = '../'.$path . '/' . $name;
$patch = $path . '/' . $name;
$tmp = UploadedFile::getInstanceByName($filename);
if ($tmp) {
$tmp->saveAs($patch);
$returnPath .= $path . '/' . $name;
}
return Yii::$app->request->hostInfo.'/'.$returnPath;
}
function recurDir($pathName)
{
//将结果保存在result变量中
$result = array();
$temp = array();
//判断传入的变量是否是目录
if(!is_dir($pathName) || !is_readable($pathName)) {
return null;
}
//取出目录中的文件和子目录名,使用scandir函数
$allFiles = scandir($pathName);
//遍历他们
foreach($allFiles as $fileName) {
//判断是否是.和..因为这两个东西神马也不是。。。
if(in_array($fileName, array('.', '..'))) {
continue;
}
//路径加文件名
$fullName = $pathName.'/'.$fileName;
//如果是目录的话就继续遍历这个目录
if(is_dir($fullName)) {
//将这个目录中的文件信息存入到数组中
$result[$fullName] = recurDir($fullName);
}else {
//如果是文件就先存入临时变量
$temp[] = $fullName;
}
}
//取出文件
if($temp) {
foreach($temp as $f) {
$result[] = $f;
}
}
return $result;
}
function checkPassWord($salt,$authkeys,$password){
$new_password = sha1("{$password}-{$salt}-{$authkeys}");
return $new_password;
}
function httpRequest($url, $data = null,$header=null) {
//echo 111;die;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
if($header) {
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
}
curl_setopt($curl, CURLOPT_HEADER, 0);//返回response头部信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
function get_server_ip(){
if(isset($_SERVER)){
if($_SERVER['SERVER_ADDR']){
$server_ip=$_SERVER['SERVER_ADDR'];
}else{
$server_ip=$_SERVER['LOCAL_ADDR'];
}
}else{
$server_ip = getenv('SERVER_ADDR');
}
return $server_ip;
}
function getVersion(){
$url=Yii::$app->params['domain_url'].'/admin/install/getdomainlist';
$data['domian_url']=Yii::$app->request->hostInfo;
$result=httpRequest($url,$data);
return json_decode($result,true);
}
function getFileArr($dir){
$file_data=list_file($dir);
$file_arr=[];
foreach ($file_data as $k=>$v){
if(is_array($v)){
foreach ($v as $ko=>$vo){
if(is_array($vo)){
foreach ($vo as $va){
$file_arr[]=$dir.'/'.$k.'/'.$ko.'/'.$va;
}
}else{
$file_arr[]=$dir.'/'.$k.'/'.$vo;
}
}
}
}
return $file_arr;
}
function getZipArr($filePath){
$zip = zip_open($filePath);
$zip_arr=[];
if ($zip){
while($zip_entry = zip_read($zip)){
$name = zip_entry_name($zip_entry);
$zip_arr[]=$name;
}
}
$new_zip=[];
foreach ($zip_arr as $v){
if(strpos($v,'.php') !==false){
$new_zip[]=$v;
}
}
return $new_zip;
}
function ybwmEncrypt($data, $key)
{
$key = md5($key);
$x = 0;
$len = strlen($data);
$l = strlen($key);
$char='';
for ($i = 0; $i < $len; $i++)
{
if ($x == $l)
{
$x = 0;
}
$char .= $key{$x};
$x++;
}
$str='';
for ($i = 0; $i < $len; $i++)
{
$str .= chr(ord($data[$i]) + (ord($char[$i])) % 256);
}
return base64_encode($str);
}
function ybwmDecrypt($data, $key)
{
$key = md5($key);
$x = 0;
$data = base64_decode($data);
$len = strlen($data);
$l = strlen($key);
$char='';
for ($i = 0; $i < $len; $i++)
{
if ($x == $l)
{
$x = 0;
}
$char .= substr($key, $x, 1);
$x++;
}
$str='';
for ($i = 0; $i < $len; $i++)
{
if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
{
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
}
else
{
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
}
}
return $str;
}
function scanRoot($dir=''){
//忽略升级的文件夹
$ignore = [
'.',
'..',
'.git',
'.lock',
'icon.jpg',
'preview.jpg',
'merchantApi',
'layouts',
'.install',
'.gitignore',
'.idea',
'.user.ini',
'assets',
'delivery',
'extend',
'helpers',
'jobs',
'mail',
'path',
'payment',
'runtime',
'template',
'tests',
'vagrant',
'vendor',
'web',
'widgets',
'yii',
'yii.bat',
'README.md',
'LICENSE.md',
'composer.phar',
'composer.json',
'composer.lock',
'install.lock',
'version.json',
'Vagrantfile',
'wxapp.php',
'insert.php',
'update.php',
'site.php',
'say.html',
'runtimedemo.txt',
'requirements.php',
'openVoice.sh',
'module.php',
'manifest.xml',
'codeception.yml',
'.htaccess',
'developer.cer',
'docker-compose.yml',
'wechat.log',
'.htaccess',
'jpush.log',
'test.sh',
'db.php',
'.well-known'
];
$output = [];
$list = scandir(Yii::$app->basePath.'/'.$dir);
foreach ($list as $item) {
if (in_array($item, $ignore)) {
continue;
}
$_temPath = Yii::$app->basePath.'/'.$dir . $item;
//dd(is_dir($_temPath));die;
if (is_dir($_temPath)) {
//dd($_temPath);
$_temOutput = scanRoot($dir . $item . '/');
$output = array_merge($output, $_temOutput);
continue;
}
$temMd5 = md5(file_get_contents($_temPath));
$output[$dir . $item] = $temMd5;
}
return $output;
}
function zipFile($fileList,$filename){
$zip = new ZipArchive();
$bool=$zip->open($filename,ZipArchive::CREATE); //打开压缩包
//var_dump($bool);
foreach($fileList as $file){
$bool=$zip->addFile($file,basename($file)); //向压缩包中添加文件
// var_dump($bool);
}
$zip->close(); //关闭压缩包
}
function channelScanRoot($dir=''){
//忽略升级的文件夹
$ignore = [
'.',
'..',
'.git',
'.lock',
'icon.jpg',
'preview.jpg',
'merchant',
'merchantApi',
'layouts',
'.install',
'.gitignore',
'.idea',
'.user.ini',
'admin',
'assets',
'commands',
'config',
'delivery',
'extend',
'helpers',
'jobs',
'mail',
'path',
'payment',
'runtime',
'template',
'tests',
'vagrant',
'vendor',
'web',
'widgets',
'yii',
'yii.bat',
'README.md',
'LICENSE.md',
'composer.phar',
'composer.json',
'composer.lock',
'install.lock',
'version.json',
'Vagrantfile',
'wxapp.php',
'insert.php',
'update.php',
'site.php',
'say.html',
'runtimedemo.txt',
'requirements.php',
'openVoice.sh',
'module.php',
'manifest.xml',
'index.php',
'codeception.yml',
'.htaccess',
'developer.cer',
'docker-compose.yml',
'wechat.log',
//'OrderController.php' 这个文件暂时不用加密
];
$output = [];
$list = scandir(Yii::$app->basePath.'/'.$dir);
//print_R($list);die;
foreach ($list as $k=>$item) {
if (in_array($item, $ignore)) {
continue;
}
$_temPath = Yii::$app->basePath.'/'.$dir . $item;
if (is_dir($_temPath)) {
$_temOutput = channelScanRoot($dir . $item . '/');
$output = array_merge($output, $_temOutput);
continue;
}
$temMd5 = md5(file_get_contents($_temPath));
$output[$dir . $item] = $temMd5;
}
return $output;
}
function addFileToZip($datalist,$tmpPath,$fileName){
$fileName = $tmpPath.$fileName;
if(!file_exists($fileName)){
//重新生成文件
$zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if ($zip->open($fileName, ZIPARCHIVE::CREATE)!==TRUE) {
exit('无法打开文件,或者文件创建失败');
}
//$datalist=list_dir($tmpPath);
//dd($datalist);die;
foreach($datalist as $val){
if(file_exists($val)){
$zip->addFile($val, str_replace($tmpPath, '', $val));
}
}
$zip->close();//关闭
}
}
//获取文件列表
function list_dir($dir){
$result = array();
if (is_dir($dir)){
$file_dir = scandir($dir);
foreach($file_dir as $file){
if ($file == '.' || $file == '..'){
continue;
}
elseif (is_dir($dir.$file)){
$result = array_merge($result, list_dir($dir.$file.'/'));
}
else{
array_push($result, $dir.$file);
}
}
}
return $result;
}
function remote_file_exists($url_file){
//检测输入
$url_file = trim($url_file);
if (empty($url_file)) { return false; }
$url_arr = parse_url($url_file);
if (!is_array($url_arr) || empty($url_arr)){return false; }
//获取请求数据
$host = $url_arr['host'];
$path = $url_arr['path'] ."?".$url_arr['query'];
$port = isset($url_arr['port']) ?$url_arr['port'] : "80";
//连接服务器
$fp = fsockopen($host, $port, $err_no, $err_str,30);
if (!$fp){ return false; }
//构造请求协议
$request_str = "GET ".$path."HTTP/1.1";
$request_str .= "Host:".$host."";
$request_str .= "Connection:Close";
//发送请求
fwrite($fp,$request_str);
$first_header = fgets($fp, 1024);
fclose($fp);
//判断文件是否存在
if (trim($first_header) == ""){ return false;}
if (!preg_match("/200/", $first_header)){
return false;
}
return true;
}
function arrayToJson($data) {
if (isset($data['id'])) {
unset($data['id']);
}
if (isset($data['ident'])) {
unset($data['ident']);
}
if (isset($data['storeId'])) {
unset($data['storeId']);
}
if (isset($data['uniacid'])) {
unset($data['uniacid']);
}
if (isset($data['identName'])) {
unset($data['identName']);
}
$key = array_keys($data);
$arr = [];
foreach ($key as $value) {
$arr[$value] = $data[$value];
}
return json_encode($arr);
}
//获取省市区数据1获取省,2获取省市,3获取省市区
function getCity($type = 1) {
$cityInfo=(new \yii\db\Query())
->from('{{%ybwm_core_district}}');
if ($type == 1) {
$data = $cityInfo->select(['id as value','name as label'])->where('level=1 AND upid=0')->all();
}
if ($type == 2) {
$data =$cityInfo->select(['id as value','name as label'])->where('level=1 AND upid=0')->all();
foreach ($data as $key => $value) {
$data[$key]['children'] = $cityInfo->select(['id as value','name as label'])->where('level=2 AND upid=:upid',[':upid'=>$value['value']])->all();
}
}
if ($type == 3) {
$data = $cityInfo->select(['id as value','name as label'])->where('level=1 AND upid=0')->all();
foreach ($data as $key => $value) {
$children = $cityInfo->select(['id as value','name as label'])->where('level=2 AND upid=:upid',[':upid'=>$value['value']])->all();
foreach ($children as $key2 => $value2) {
$children[$key2]['children'] = $cityInfo->select(['id as value','name as label'])->where('level=3 AND upid=:upid',[':upid'=>$value2['value']])->all();
}
$data[$key]['children'] = $children;
}
}
return $data;
}
//距离
function getDistance($lat1, $lng1, $lat2, $lng2) {
$EARTH_RADIUS = 6378137; //地球半径
$RAD = pi() / 180.0;
$radLat1 = $lat1 * $RAD;
$radLat2 = $lat2 * $RAD;
$a = $radLat1 - $radLat2; // 两点纬度差
$b = ($lng1 - $lng2) * $RAD; // 两点经度差
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
$s = $s * $EARTH_RADIUS;
return round(round($s * 10000) / 10000 / 1000, 2);
}
function array_get($array, $key, $default = null)
{
if (is_null($key)) {
return $array;
}
if (isset($array[$key])) {
return $array[$key];
}
foreach (explode('.', $key) as $segment) {
if (!is_array($array) || !array_key_exists($segment, $array)) {
return value($default);
}
$array = $array[$segment];
}
return $array;
}
function mFristAndLast($y=0,$m=0){
$y = $y ? $y : date('Y');
$m = $m ? $m : date('m');
$d = date('t', strtotime($y.'-'.$m));
return array("startTime"=>strtotime($y.'-'.$m),"endTime"=>mktime(23,59,59,$m,$d,$y));
}
//腾讯转百度坐标转换
function coordinateSwitchf($a, $b) {
$x = (double) $b;
$y = (double) $a;
$x_pi = 3.14159265358979324;
$z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
$theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
$gb = number_format($z * cos($theta) + 0.0065, 6);
$ga = number_format($z * sin($theta) + 0.006, 6);
return ['Latitude' => $ga, 'Longitude' => $gb];
}
/**
* 获取指定月份数组
* @param $date
* @param $rtype 1天数 2具体日期数组
* @return
*/
function get_day( $date ,$rtype = '1'){
$tem = explode('-' , $date); //切割日期 得到年份和月份
$year = $tem['0'];
$month = $tem['1'];
if( in_array($month , array( '1' , '3' , '5' , '7' , '8' , '01' , '03' , '05' , '07' , '08' , '10' , '12'))) {
// $text = $year.'年的'.$month.'月有31天';
$text = '31';
}
elseif( $month == 2 )
{
if ( $year%400 == 0 || ($year%4 == 0 && $year%100 !== 0) ) //判断是否是闰年
{
// $text = $year.'年的'.$month.'月有29天';
$text = '29';
}
else{
// $text = $year.'年的'.$month.'月有28天';
$text = '28';
}
}
else{
// $text = $year.'年的'.$month.'月有30天';
$text = '30';
}
if ($rtype == '2') {
for ($i = 1; $i <= $text ; $i ++ ) {
if($i<10){
$i='0'.$i;
}
$r[$year."-".$month."-".$i] =0 ;
}
} else {
$r = $text;
}
return $r;
}
function dataByTime($data,$endTime=null){
$arr=[];
for ($i=14; $i>=0;$i--){
if($endTime){
$day=date('Y-m-d',bcsub(strtotime($endTime),bcmul(bcmul(bcmul($i,24),60),60)));
}else{
$day=date('Y-m-d', strtotime('-'.$i.' days'));
}
if(!is_string($day)){
$day=strval($day);
}
$arr[$day]=0;
}
$newArr=[];
foreach ($data as $k=>$v){
//
if(substr($v['hours'],0,1)=='0'){
$v['hours']=substr($v['hours'],1);
}
$newArr[$v['hours']]=$v['money'];
}
if($newArr){
$data_arr=$newArr+$arr;
}else{
$data_arr=$arr;
}
ksort($data_arr);
$a=[];
foreach ($data_arr as $key=>$v){
$a[]=array(
'hours'=>$key,
'money'=>$v
);
}
//dd($a);die;
return $a;
}
function CreatQuery($type,$re,$time=''){
$arr=[];
if($type==1){
for ($i=1;$i<=24;$i++){
$arr[$i]=0;
}
}elseif($type==2){
for ($i=14; $i>=0;$i--){
if($time){
$day=date('Y-m-d',strtotime($time)-24*$i*60*60);
}else{
$day=date('Y-m-d', strtotime('-'.$i.' days'));
}
if(!is_string($day)){
$day=strval($day);
}
$arr[$day]=0;
}
}elseif($type==3){
$arr=get_day($time,'2');
}
$newArr=[];
foreach ($re as $k=>$v){
//
if(substr($v['hours'],0,1)=='0'){
$v['hours']=substr($v['hours'],1);
}
$newArr[$v['hours']]=$v['money'];
}
if($newArr){
$data_arr=$newArr+$arr;
}else{
$data_arr=$arr;
}
ksort($data_arr);
$a=[];
foreach ($data_arr as $key=>$v){
$a[]=array(
'hours'=>$key,
'money'=>$v
);
}
//dd($a);die;
return $a;
}
function getSysInfo(){
$json=ybwmDecrypt(file_get_contents('./web/secret.json'),Yii::$app->params['channel_model_name']);
$json='{"time_start":"2020-10-16 00:00:00","time_end":"2099-11-30 00:00:00","time_type":1,"domain_url":"v2.b-ke.cn","domain_name":"\u4e91\u8d1d\u8fde\u9501\u9910\u996eV2\u540e\u53f0\u6f14\u793a","phone":"15307193890","auth_code":"UERRE-MXFHD-RUFZY-NUBGR","status":1,"account_type":1,"account_number":30,"id":90,"service_type":"\u5546\u4e1a\u6388\u6743\u7248","authData":{"channel":["mini","ali","zijie","wechat"],"plug":["miniPlay","rollBag","cashier","payVip","oldWithNew","distribution","queuing","reserve","dividend"],"service":["app","chshier","ps"]},"appName":"\u8fde\u9501\u7248"}';
$data=json_decode($json,true);
return $data;
}
//获取独立版本信息.插件及渠道
function getSysInformation(){
$json=ybwmDecrypt(file_get_contents('./web/secret.json'),Yii::$app->params['channel_model_name']);
$data=json_decode($json,true);
$newArr=array(
'appData'=>$data['appData'],
'authData'=>$data['authData'],
);
return $newArr;
}
//获取指定版本的插件 渠道
function getChannelData($modelName){
$json=ybwmDecrypt(file_get_contents('./web/secret.json'),Yii::$app->params['channel_model_name']);
$data=json_decode($json,true)['authData'];
$arr=[];
foreach ($data as $k=>$v){
if($k==$modelName){
$arr=$v['channel'];
}
}
return $arr;
}
function getPlugData($modelName){
$json=ybwmDecrypt(file_get_contents('./web/secret.json'),Yii::$app->params['channel_model_name']);
$data=json_decode($json,true)['authData'];
$arr=[];
foreach ($data as $k=>$v){
$key=array_keys($v);
if($key[0]==$modelName){
$arr=$v[$key[0]]['plug'];
}
}
return $arr;
}
/**
* 下载程序压缩包文件
* @param $url 要下载的url
* @param $save_dir 要存放的目录
* @return res 成功返回下载信息 失败返回false
*/
function down_file($url, $save_dir) {
if (trim($url) == '') {
return false;
}
if (trim($save_dir) == '') {
return false;
}
if (0 !== strrpos($save_dir, '/')) {
$save_dir.= '/';
}
$filename = basename($url);
//创建保存目录
if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
return false;
}
//开始下载
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$content = curl_exec($ch);
$status = curl_getinfo($ch);
curl_close($ch);
// 判断执行结果
if ($status['http_code'] ==200) {
$size = strlen($content);
//文件大小
$fp2 = @fopen($save_dir . $filename , 'a');
fwrite($fp2, $content);
fclose($fp2);
unset($content, $url);
$res = [
'status' =>$status['http_code'] ,
'file_name' => $filename,
'save_path' => $save_dir . $filename
];
} else {
$res = false;
}
return $res;
}
//删除文件夹
function removeDir($dirName){
if(! is_dir($dirName))
{
return false;
}
$handle = @opendir($dirName);
while(($file = @readdir($handle)) !== false)
{
if($file != '.' && $file != '..')
{
$dir = $dirName . '/' . $file;
is_dir($dir) ? removeDir($dir) : @unlink($dir);
}
}
closedir($handle);
return rmdir($dirName) ;
}
function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true){
if ($zip = zip_open($src_file)){
if ($zip){
$splitter = ($create_zip_name_dir === true) ? "." : "/";
if($dest_dir === false){
$dest_dir = substr($src_file, 0, strrpos($src_file, $splitter))."/";
}
//var_dump($src_file);die;
// 如果不存在 创建目标解压目录
create_dirs($dest_dir);
// 对每个文件进行解压
while ($zip_entry = zip_read($zip)){
// 文件不在根目录
$pos_last_slash = strrpos(zip_entry_name($zip_entry), "/");
if ($pos_last_slash !== false){
// 创建目录 在末尾带 /
create_dirs($dest_dir.'/'.substr(zip_entry_name($zip_entry), 0, $pos_last_slash+1));
}
// 打开包
if (zip_entry_open($zip,$zip_entry,"r")){
// 文件名保存在磁盘上,
$file_name = $dest_dir.'/'.zip_entry_name($zip_entry);
// 检查文件是否需要重写
if ($overwrite === true || $overwrite === false && !is_file($file_name)){
// 读取压缩文件的内容
$fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
@file_put_contents($file_name, $fstream);
// 设置权限
chmod($file_name, 0777);
//echo "save: ".$file_name."
";die;
}
// 关闭入口
zip_entry_close($zip_entry);
}
}
// 关闭压缩包
zip_close($zip);
}
}else{
return false;
}
return true;
}
/**
* 创建目录
*/
function create_dirs($path){
if (!is_dir($path)){
$directory_path = "";
$directories = explode("/",$path);
array_pop($directories);
foreach($directories as $directory){
$directory_path .= $directory."/";
if (!is_dir($directory_path)){
mkdir($directory_path);
chmod($directory_path, 0777);
}
}
}
}
function filterArr($arr,$data){
$newData=[];
foreach ($arr as $v){
$count=0;
foreach ($data as $vo){
if($v['days']==$vo['days']&&$vo['count']){
$count=$vo['count'];
}
}
$newData[]=array(
'days'=>$v['days'],
'count'=>$count,
);
}
return $newData;
}
//门店编号,6位数不足6位数补0
function storeCode($shop_id){
if(is_numeric($shop_id)){
$num=6-strlen($shop_id);
$code=str_pad(mt_rand(0, 999999), $num, "0", STR_PAD_BOTH);
$code=substr($code,0,$num).$shop_id;
return $code;
}
}
function curl_post($url, $params = array(), $headers = [])
{
$params = json_encode($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//ssl?false
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
//查看当月的第一天和最后一天
function getMonthRange() {
$beginDate = date('Y-m-01 00:00:00', strtotime(date("Y-m-d")));
$endDate = date('Y-m-d 23:59:59', strtotime("$beginDate +1 month -1 day"));
$data['start'] = strtotime($beginDate);
$data['end'] = strtotime($endDate);
return $data;
}
//查看当周的第一天和最后一天
function getWeekRange() {
$sdefaultDate = date("Y-m-d");
// $first =1 表示每周星期一为开始日期 0表示每周日为开始日期
$first = 1;
// 获取当前周的第几天 周日是 0 周一到周六是 1 - 6
$w = date('w', strtotime($sdefaultDate));
// 获取本周开始日期,如果$w是0,则表示周日,减去 6 天
$week_start = date('Y-m-d 00:00:00', strtotime("$sdefaultDate -" . ($w ? $w - $first : 6) . ' days'));
// 本周结束日期
$week_end = date('Y-m-d 23:59:59', strtotime("$week_start +6 days"));
$data['start'] = strtotime($week_start);
$data['end'] = strtotime($week_end);
return $data;
}
//查看当周的第一天和最后一天
function getQuarterRange() {
$season = ceil((date('n'))/3);//当月是第几季度
$data['start'] =mktime(0, 0, 0,$season*3-3+1,1,date('Y'));
$data['end'] = mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'));
return $data;
}
function downloadExcel($newExcel, $filename, $format)
{
// $format只能为 Xlsx 或 Xls
if ($format == 'Xlsx') {
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
} elseif ($format == 'Xls') {
header('Content-Type: application/vnd.ms-excel');
}
header("Content-Disposition: attachment;filename="
. $filename . '.' . strtolower($format));
header('Cache-Control: max-age=0');
$objWriter = IOFactory::createWriter($newExcel, $format);
try {
$objWriter->save('php://output');
} catch (Exception $e) {
echo $e->getMessage();
// die(); // 终止异常
}
//通过php保存在本地的时候需要用到
//$objWriter->save($dir.'/demo.xlsx');
//以下为需要用到IE时候设置
// If you're serving to IE 9, then the following may be needed
//header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
//header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
//header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
//header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
//header('Pragma: public'); // HTTP/1.0
exit;
}
//返回当日是周几
function getWeek($unixTime=''){
$unixTime=is_numeric($unixTime)?$unixTime:time();
$weekarray=array('日','一','二','三','四','五','六');
return '周'.$weekarray[date('w',$unixTime)];
}
function getCurrentTimeSection($beginTime,$endTime)
{
$checkDayStr = date('Y-m-d ',time());
$timeBegin1 = strtotime($checkDayStr."$beginTime".":00");
$timeEnd1 = strtotime($checkDayStr."$endTime".":00");
$curr_time = time();
if($curr_time >= $timeBegin1 && $curr_time <= $timeEnd1)
{
return 1;
}
return 0;
}
//数组转换成xml
function arrayToXml($arr) {
$xml = "";
foreach ($arr as $key => $val) {
if (is_array($val)) {
$xml .= "<" . $key . ">" . arrayToXml($val) . "" . $key . ">";
} else {
$xml .= "<" . $key . ">" . $val . "" . $key . ">";
}
}
$xml .= "";
return $xml;
}
//xml转换成数组
function xmlToArray($xml) {
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$val = json_decode(json_encode($xmlstring), true);
return $val;
}
function qrcodeWithLogo($QR, $logo) {
$QR = imagecreatefromstring($QR);
$logo = imagecreatefromstring($logo);
$QR_width = imagesx($QR); //二维码图片宽度
$QR_height = imagesy($QR); //二维码图片高度
$logo_width = imagesx($logo); //logo图片宽度
$logo_height = imagesy($logo); //logo图片高度
$logo_qr_width = $QR_width / 2.2; //组合之后logo的宽度(占二维码的1/2.2)
$scale = $logo_width / $logo_qr_width; //logo的宽度缩放比(本身宽度/组合后的宽度)
$logo_qr_height = $logo_height / $scale; //组合之后logo的高度
$from_width = ($QR_width - $logo_qr_width) / 2; //组合之后logo左上角所在坐标点
/**
* 重新组合图片并调整大小
* imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
*/
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
/**
* 如果想要直接输出图片,应该先设header。header("Content-Type: image/png; charset=utf-8");
* 并且去掉缓存区函数
*/
//获取输出缓存,否则imagepng会把图片输出到浏览器
ob_start();
imagepng($QR);
imagedestroy($QR);
imagedestroy($logo);
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
/**
* 剪切图片为圆形
* @param $picture 图片数据流 比如file_get_contents(imageurl)返回的东东
* @return 图片数据流
*/
function yuanImg($picture) {
$src_img = imagecreatefromstring($picture);
$w = imagesx($src_img);
$h = imagesy($src_img);
$w = min($w, $h);
$h = $w;
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $w / 2; //圆半径
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbColor = imagecolorat($src_img, $x, $y);
if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
}
}
/**
* 如果想要直接输出图片,应该先设header。header("Content-Type: image/png; charset=utf-8");
* 并且去掉缓存区函数
*/
//获取输出缓存,否则imagepng会把图片输出到浏览器
ob_start();
imagepng($img);
imagedestroy($img);
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
/**
* 获取某月所有时间
* @param string $time 某天时间戳
* @param string $format 转换的时间格式
* @return array
**/
function getMonth($time = '', $format='Y-m-d'){
$time = $time != '' ? $time : time();
//获取当前周几
$week = date('d', $time);
$date = [];
for ($i=1; $i<= date('t', $time); $i++){
//if(strtotime( '+' . $i-$week .' days', $time)<=time()) {
$date[] = date($format, strtotime('+' . $i - $week . ' days', $time));
// }
}
return $date;
}
//删除目录及文件
function deldir($path) {
//如果是目录则继续
if (is_dir($path)) {
//扫描一个文件夹内的所有文件夹和文件并返回数组
$p = scandir($path);
foreach ($p as $key => $val) {
//排除目录中的.和..
if ($val != "." && $val != "..") {
//如果是目录则递归子目录,继续操作
if (is_dir($path . $val)) {
//子目录中操作删除文件夹和文件
deldir($path . $val . '/');
//目录清空后删除空文件夹
@rmdir($path . $val);
} else {
//如果是文件直接删除
unlink($path . '/' . $val);
}
}
}
//closedir($dh);
//删除目录文件夹
if (rmdir($path)) {
return true;
} else {
return false;
}
}
return false;
}
/**
* 获取两个时间之间的日期
* @param $startDate
* @param $endDate
* @return array
*/
function getDatesBetweenTwoDays($startDate, $endDate)
{
$dates = [];
if (strtotime($startDate) > strtotime($endDate)) {
// 如果开始日期大于结束日期,直接return 防止下面的循环出现死循环
return $dates;
} elseif ($startDate == $endDate) {
// 开始日期与结束日期是同一天时
array_push($dates, $startDate);
return $dates;
} else {
array_push($dates, $startDate);
$currentDate = $startDate;
do {
$nextDate = date('Y-m-d', strtotime($currentDate . ' +1 days'));
array_push($dates, $nextDate);
$currentDate = $nextDate;
} while ($endDate != $currentDate);
return $dates;
}
}
/**
* 数据导出
* @param array $title 标题行名称
* @param array $data 导出数据 需要注意导出的时候,是按照查询字段先后顺序的
* @param string $fileName 下载是的excel文件名
* @param string $savePath 保存路径
* @param $isDown 是否下载 false--保存 true--下载
* @return $top_name 首行合并的抬头内容
*/
//示例 exportExcel(array('姓名','年龄'), array(array('a',21),array('b',23)), '我是下载的excle名字', './', true,'我是首行抬头居中的内容');
function exportExcel($title, $data, $fileName, $savePath='./', $isDown=true,$top_name=''){
error_reporting(0);
$obj = new Spreadsheet(); //创建一个新的excel文档
//横向单元格标识
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
$obj->getActiveSheet(0)->setTitle('sheet名称'); //设置sheet名称
$_row = 1; //设置纵向单元格标识
if($title){
$_cnt = count($title);
//$obj->getActiveSheet(0)->mergeCells('A'.$_row.':'.$cellName[$_cnt-1].$_row); //合并单元格
if($top_name){
$obj->setActiveSheetIndex(0)->setCellValue('A'.$_row, $top_name); //设置合并后的单元格内容
$_row++;
}
//
$obj->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$obj->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
//
$i = 0;
foreach($title AS $v){ //设置列标题
$obj->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row, $v);
$i++;
}
$_row++;
}
//填写数据
if($data){
$i = 0;
foreach($data AS $_v){
$j = 0;
foreach($_v AS $_cell){
$obj->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell);
$j++;
}
$i++;
}
}
//文件名处理
if(!$fileName){
$fileName = uniqid(time(),true);
}
$objWrite = IOFactory::createWriter($obj, 'Xls');
if($isDown){ //网页下载
header('pragma:public');
header("Content-Disposition:attachment;filename=$fileName.xls");
$objWrite->save('php://output');exit;
}
$_fileName = iconv("utf-8", "gb2312", $fileName); //转码
$_savePath = $savePath.$_fileName.'.xlsx';
$objWrite->save($_savePath);
return $savePath.$fileName.'.xlsx';
}
function Sec2Time($time)
{
if (is_numeric($time)) {
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
$t = '';
if ($time >= 31556926) {
$value["years"] = floor($time / 31556926);
$time = ($time % 31556926);
$t .= $value["years"] . "年";
}
if ($time >= 86400) {
$value["days"] = floor($time / 86400);
$time = ($time % 86400);
$t .= $value["days"] . "天";
}
if ($time >= 3600) {
$value["hours"] = floor($time / 3600);
$time = ($time % 3600);
$t .= $value["hours"] . "小时";
}
if ($time >= 60) {
$value["minutes"] = floor($time / 60);
$time = ($time % 60);
$t .= $value["minutes"] . "分";
}
$value["seconds"] = floor($time);
//return (array) $value;
$t .= $value["seconds"] . "秒";
return $t;
} else {
return (bool) false;
}
}
function miniScan($dir){
//忽略升级的文件夹
$ignore = [
'.',
'..',
];
$output = [];
$list = scandir(Yii::$app->basePath.'/'.$dir);
foreach ($list as $item) {
if (in_array($item, $ignore)) {
continue;
}
$_temPath = Yii::$app->basePath.'/'.$dir . $item;
// dd($_temPath);die;
if (is_dir($_temPath)) {
//dd($_temPath);
$_temOutput = miniScan($dir . $item . '/');
$output = array_merge($output, $_temOutput);
continue;
}
$temMd5 = md5(file_get_contents($_temPath));
$output[$dir . $item] = $temMd5;
}
return $output;
}
function dateRange($time = null, $day = 7, $format = 'Y-m-d') {
$time = $time ?: strtotime(date($format));
$date = [];
$weekArr[] = '周日';
$weekArr[] = '周一';
$weekArr[] = '周二';
$weekArr[] = '周三';
$weekArr[] = '周四';
$weekArr[] = '周五';
$weekArr[] = '周六';
for ($i = 0; $i < $day; $i++) {
$dateTime = date($format, strtotime('+' . $i . ' days', $time));
$dayName = date("m-d", strtotime('+' . $i . ' days', $time));
if ($dateTime == date($format)) {
$dayName = '今天';
}
if ($dateTime == date($format, strtotime('+1days', time()))) {
$dayName = '明天';
}
$date[$i] = array(
'time' => $dateTime,
'week' => date("w", strtotime($dateTime)) == 0 ? 7 : date("w", strtotime($dateTime)),
'day' => $dayName,
'weekName' => $weekArr[date("w", strtotime($dateTime))],
);
}
return $date;
}
//获取本周日期
function get_week($time = '', $format = 'Y-m-d') {
$time = $time != '' ? $time : time();
//获取当前周几
$week = date('w', $time);
$date = [];
for ($i = 0; $i < 7; $i++) {
$date[$i] = date($format, strtotime('+' . $i . ' days', $time));
}
return $date;
}
// php 获取当前访问的完整url
function GetCurUrl() {
$url =$_SERVER["REQUEST_SCHEME"].'://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
return $url;
}
function stringToPinYin($chinese){
$chinese=set_char($chinese);
$result = '' ;
for ($i=0; $i160) {
$q = ord(substr($chinese,++$i,1));
$p = $p*256 + $q - 65536;
}
$result .= substr(zh_to_py($p),0,1);
}
return $result ;
}
//-------------------中文转拼音--------------------------------//
function zh_to_py($num, $blank = '') {
$pylist = array(
'a'=>-20319,
'ai'=>-20317,
'an'=>-20304,
'ang'=>-20295,
'ao'=>-20292,
'ba'=>-20283,
'bai'=>-20265,
'ban'=>-20257,
'bang'=>-20242,
'bao'=>-20230,
'bei'=>-20051,
'ben'=>-20036,
'beng'=>-20032,
'bi'=>-20026,
'bian'=>-20002,
'biao'=>-19990,
'bie'=>-19986,
'bin'=>-19982,
'bing'=>-19976,
'bo'=>-19805,
'bu'=>-19784,
'ca'=>-19775,
'cai'=>-19774,
'can'=>-19763,
'cang'=>-19756,
'cao'=>-19751,
'ce'=>-19746,
'ceng'=>-19741,
'cha'=>-19739,
'chai'=>-19728,
'chan'=>-19725,
'chang'=>-19715,
'chao'=>-19540,
'che'=>-19531,
'chen'=>-19525,
'cheng'=>-19515,
'chi'=>-19500,
'chong'=>-19484,
'chou'=>-19479,
'chu'=>-19467,
'chuai'=>-19289,
'chuan'=>-19288,
'chuang'=>-19281,
'chui'=>-19275,
'chun'=>-19270,
'chuo'=>-19263,
'ci'=>-19261,
'cong'=>-19249,
'cou'=>-19243,
'cu'=>-19242,
'cuan'=>-19238,
'cui'=>-19235,
'cun'=>-19227,
'cuo'=>-19224,
'da'=>-19218,
'dai'=>-19212,
'dan'=>-19038,
'dang'=>-19023,
'dao'=>-19018,
'de'=>-19006,
'deng'=>-19003,
'di'=>-18996,
'dian'=>-18977,
'diao'=>-18961,
'die'=>-18952,
'ding'=>-18783,
'diu'=>-18774,
'dong'=>-18773,
'dou'=>-18763,
'du'=>-18756,
'duan'=>-18741,
'dui'=>-18735,
'dun'=>-18731,
'duo'=>-18722,
'e'=>-18710,
'en'=>-18697,
'er'=>-18696,
'fa'=>-18526,
'fan'=>-18518,
'fang'=>-18501,
'fei'=>-18490,
'fen'=>-18478,
'feng'=>-18463,
'fo'=>-18448,
'fou'=>-18447,
'fu'=>-18446,
'ga'=>-18239,
'gai'=>-18237,
'gan'=>-18231,
'gang'=>-18220,
'gao'=>-18211,
'ge'=>-18201,
'gei'=>-18184,
'gen'=>-18183,
'geng'=>-18181,
'gong'=>-18012,
'gou'=>-17997,
'gu'=>-17988,
'gua'=>-17970,
'guai'=>-17964,
'guan'=>-17961,
'guang'=>-17950,
'gui'=>-17947,
'gun'=>-17931,
'guo'=>-17928,
'ha'=>-17922,
'hai'=>-17759,
'han'=>-17752,
'hang'=>-17733,
'hao'=>-17730,
'he'=>-17721,
'hei'=>-17703,
'hen'=>-17701,
'heng'=>-17697,
'hong'=>-17692,
'hou'=>-17683,
'hu'=>-17676,
'hua'=>-17496,
'huai'=>-17487,
'huan'=>-17482,
'huang'=>-17468,
'hui'=>-17454,
'hun'=>-17433,
'huo'=>-17427,
'ji'=>-17417,
'jia'=>-17202,
'jian'=>-17185,
'jiang'=>-16983,
'jiao'=>-16970,
'jie'=>-16942,
'jin'=>-16915,
'jing'=>-16733,
'jiong'=>-16708,
'jiu'=>-16706,
'ju'=>-16689,
'juan'=>-16664,
'jue'=>-16657,
'jun'=>-16647,
'ka'=>-16474,
'kai'=>-16470,
'kan'=>-16465,
'kang'=>-16459,
'kao'=>-16452,
'ke'=>-16448,
'ken'=>-16433,
'keng'=>-16429,
'kong'=>-16427,
'kou'=>-16423,
'ku'=>-16419,
'kua'=>-16412,
'kuai'=>-16407,
'kuan'=>-16403,
'kuang'=>-16401,
'kui'=>-16393,
'kun'=>-16220,
'kuo'=>-16216,
'la'=>-16212,
'lai'=>-16205,
'lan'=>-16202,
'lang'=>-16187,
'lao'=>-16180,
'le'=>-16171,
'lei'=>-16169,
'leng'=>-16158,
'li'=>-16155,
'lia'=>-15959,
'lian'=>-15958,
'liang'=>-15944,
'liao'=>-15933,
'lie'=>-15920,
'lin'=>-15915,
'ling'=>-15903,
'liu'=>-15889,
'long'=>-15878,
'lou'=>-15707,
'lu'=>-15701,
'lv'=>-15681,
'luan'=>-15667,
'lue'=>-15661,
'lun'=>-15659,
'luo'=>-15652,
'ma'=>-15640,
'mai'=>-15631,
'man'=>-15625,
'mang'=>-15454,
'mao'=>-15448,
'me'=>-15436,
'mei'=>-15435,
'men'=>-15419,
'meng'=>-15416,
'mi'=>-15408,
'mian'=>-15394,
'miao'=>-15385,
'mie'=>-15377,
'min'=>-15375,
'ming'=>-15369,
'miu'=>-15363,
'mo'=>-15362,
'mou'=>-15183,
'mu'=>-15180,
'na'=>-15165,
'nai'=>-15158,
'nan'=>-15153,
'nang'=>-15150,
'nao'=>-15149,
'ne'=>-15144,
'nei'=>-15143,
'nen'=>-15141,
'neng'=>-15140,
'ni'=>-15139,
'nian'=>-15128,
'niang'=>-15121,
'niao'=>-15119,
'nie'=>-15117,
'nin'=>-15110,
'ning'=>-15109,
'niu'=>-14941,
'nong'=>-14937,
'nu'=>-14933,
'nv'=>-14930,
'nuan'=>-14929,
'nue'=>-14928,
'nuo'=>-14926,
'o'=>-14922,
'ou'=>-14921,
'pa'=>-14914,
'pai'=>-14908,
'pan'=>-14902,
'pang'=>-14894,
'pao'=>-14889,
'pei'=>-14882,
'pen'=>-14873,
'peng'=>-14871,
'pi'=>-14857,
'pian'=>-14678,
'piao'=>-14674,
'pie'=>-14670,
'pin'=>-14668,
'ping'=>-14663,
'po'=>-14654,
'pu'=>-14645,
'qi'=>-14630,
'qia'=>-14594,
'qian'=>-14429,
'qiang'=>-14407,
'qiao'=>-14399,
'qie'=>-14384,
'qin'=>-14379,
'qing'=>-14368,
'qiong'=>-14355,
'qiu'=>-14353,
'qu'=>-14345,
'quan'=>-14170,
'que'=>-14159,
'qun'=>-14151,
'ran'=>-14149,
'rang'=>-14145,
'rao'=>-14140,
're'=>-14137,
'ren'=>-14135,
'reng'=>-14125,
'ri'=>-14123,
'rong'=>-14122,
'rou'=>-14112,
'ru'=>-14109,
'ruan'=>-14099,
'rui'=>-14097,
'run'=>-14094,
'ruo'=>-14092,
'sa'=>-14090,
'sai'=>-14087,
'san'=>-14083,
'sang'=>-13917,
'sao'=>-13914,
'se'=>-13910,
'sen'=>-13907,
'seng'=>-13906,
'sha'=>-13905,
'shai'=>-13896,
'shan'=>-13894,
'shang'=>-13878,
'shao'=>-13870,
'she'=>-13859,
'shen'=>-13847,
'sheng'=>-13831,
'shi'=>-13658,
'shou'=>-13611,
'shu'=>-13601,
'shua'=>-13406,
'shuai'=>-13404,
'shuan'=>-13400,
'shuang'=>-13398,
'shui'=>-13395,
'shun'=>-13391,
'shuo'=>-13387,
'si'=>-13383,
'song'=>-13367,
'sou'=>-13359,
'su'=>-13356,
'suan'=>-13343,
'sui'=>-13340,
'sun'=>-13329,
'suo'=>-13326,
'ta'=>-13318,
'tai'=>-13147,
'tan'=>-13138,
'tang'=>-13120,
'tao'=>-13107,
'te'=>-13096,
'teng'=>-13095,
'ti'=>-13091,
'tian'=>-13076,
'tiao'=>-13068,
'tie'=>-13063,
'ting'=>-13060,
'tong'=>-12888,
'tou'=>-12875,
'tu'=>-12871,
'tuan'=>-12860,
'tui'=>-12858,
'tun'=>-12852,
'tuo'=>-12849,
'wa'=>-12838,
'wai'=>-12831,
'wan'=>-12829,
'wang'=>-12812,
'wei'=>-12802,
'wen'=>-12607,
'weng'=>-12597,
'wo'=>-12594,
'wu'=>-12585,
'xi'=>-12556,
'xia'=>-12359,
'xian'=>-12346,
'xiang'=>-12320,
'xiao'=>-12300,
'xie'=>-12120,
'xin'=>-12099,
'xing'=>-12089,
'xiong'=>-12074,
'xiu'=>-12067,
'xu'=>-12058,
'xuan'=>-12039,
'xue'=>-11867,
'xun'=>-11861,
'ya'=>-11847,
'yan'=>-11831,
'yang'=>-11798,
'yao'=>-11781,
'ye'=>-11604,
'yi'=>-11589,
'yin'=>-11536,
'ying'=>-11358,
'yo'=>-11340,
'yong'=>-11339,
'you'=>-11324,
'yu'=>-11303,
'yuan'=>-11097,
'yue'=>-11077,
'yun'=>-11067,
'za'=>-11055,
'zai'=>-11052,
'zan'=>-11045,
'zang'=>-11041,
'zao'=>-11038,
'ze'=>-11024,
'zei'=>-11020,
'zen'=>-11019,
'zeng'=>-11018,
'zha'=>-11014,
'zhai'=>-10838,
'zhan'=>-10832,
'zhang'=>-10815,
'zhao'=>-10800,
'zhe'=>-10790,
'zhen'=>-10780,
'zheng'=>-10764,
'zhi'=>-10587,
'zhong'=>-10544,
'zhou'=>-10533,
'zhu'=>-10519,
'zhua'=>-10331,
'zhuai'=>-10329,
'zhuan'=>-10328,
'zhuang'=>-10322,
'zhui'=>-10315,
'zhun'=>-10309,
'zhuo'=>-10307,
'zi'=>-10296,
'zong'=>-10281,
'zou'=>-10274,
'zu'=>-10270,
'zuan'=>-10262,
'zui'=>-10260,
'zun'=>-10256,
'zuo'=>-10254
);
if($num>0 && $num<160 ) {
return chr($num);
} elseif ($num<-20319||$num>-10247) {
return $blank;
} else {
foreach ($pylist as $py => $code) {
if($code > $num) break;
$result = $py;
}
return $result;
}
}
function set_char($str,$charset="utf-8",$charset_out="gb2312"){
if(function_exists('iconv')){
$str=iconv($charset,$charset_out,$str);
}elseif(function_exists("mb_convert_encoding")){
$str=mb_convert_encoding($str,$charset_out,$charset);
}
return $str;
}