php常用的函数

   1 <?php
   2     public function clear_html($array)
   3      {
   4             if (!is_array($array))
   5                 return trim(htmlspecialchars($array, ENT_QUOTES));
   6             foreach ($array as $key => $value) {
   7                 if (is_array($value)) {
   8                     $this->clear_html($value);
   9                 } else {
  10                     $array[$key] = trim(htmlspecialchars($value, ENT_QUOTES));
  11                 }
  12             }
  13             return $array;
  14         }
  15
  16      public function dexit($data = ‘‘)
  17      {
  18         if (is_array($data)) {
  19             echo json_encode($data);
  20         } else {
  21             echo $data;
  22         }
  23         exit();
  24      }
  25
  26
  27     //二维数组转一维数组
  28     public function arr2_arr1($arrdata,$v)
  29     {
  30         $arrs = array();
  31         foreach ($arrdata as $key => $value) {
  32             $arrs[] = $value[$v];
  33         }
  34         return $arrs;
  35     }
  36     //生成php随机数
  37      public function randomkey($length)
  38     {
  39        $pattern = ‘1234567890abcdefghijklmnopqrstuvwxyz
  40                    ABCDEFGHIJKLOMNOPQRSTUVWXYZ‘;
  41         for($i=0;$i<$length;$i++)
  42         {
  43             $key .= $pattern{mt_rand(0,35)};    //生成php随机数
  44         }
  45         return $key;
  46     }
  47
  48
  49     //打印
  50     public function dump($var, $echo = true, $label = null, $strict = true)
  51 {
  52     $label = ($label === null) ? ‘‘ : rtrim($label) . ‘ ‘;
  53     if (!$strict) {
  54         if (ini_get(‘html_errors‘)) {
  55             $output = print_r($var, true);
  56             $output = ‘<pre>‘ . $label . htmlspecialchars($output, ENT_QUOTES) . ‘</pre>‘;
  57         } else {
  58             $output = $label . print_r($var, true);
  59         }
  60     } else {
  61         ob_start();
  62         var_dump($var);
  63         $output = ob_get_clean();
  64         if (!extension_loaded(‘xdebug‘)) {
  65             $output = preg_replace("/\]\=\>\n(\s+)/m", ‘] => ‘, $output);
  66             $output = ‘<pre>‘ . $label . htmlspecialchars($output, ENT_QUOTES) . ‘</pre>‘;
  67         }
  68     }
  69     if ($echo) {
  70         echo($output);
  71         return null;
  72     } else
  73         return $output;
  74 }
  75
  76  //无限极分类
  77       function GetTree($arr,$pid,$step){
  78         global $tree;
  79         foreach($arr as $key=>$val) {
  80             if($val[‘auth_pid‘] == $pid) {
  81                 $flg = str_repeat(‘└―‘,$step);
  82                 $val[‘name‘] = $flg.$val[‘name‘];
  83                 $tree[] = $val;
  84                 GetTree($arr , $val[‘id‘] ,$step+1);
  85             }
  86         }
  87         return $tree;
  88    }
  89
  90 ?>
  91
  92  <?php
  93 /**
  94  * 公共方法
  95  */
  96
  97
  98 /**
  99  * 去除多余的转义字符
 100  */
 101 function doStripslashes(){
 102     if(get_magic_quotes_gpc()){
 103         $_GET = stripslashesDeep($_GET);
 104         $_POST = stripslashesDeep($_POST);
 105         $_COOKIE = stripslashesDeep($_COOKIE);
 106         $_REQUEST = stripslashesDeep($_REQUEST);
 107     }
 108 }
 109
 110 /**
 111  * 递归去除转义字符
 112  */
 113 function stripslashesDeep($value){
 114     $value = is_array($value) ? array_map(‘stripslashesDeep‘, $value) : stripslashes($value);
 115     return $value;
 116 }
 117
 118 /**
 119  * URL重定向
 120  * @param string $url 重定向的URL地址
 121  * @param integer $time 重定向的等待时间(秒)
 122  * @param string $msg 重定向前的提示信息
 123  * @return void
 124  */
 125 function redirect($url, $time=0, $msg=‘‘){
 126     //多行URL地址支持
 127     $url        = str_replace(array("\n", "\r"), ‘‘, $url);
 128     if (empty($msg))
 129         $msg    = "系统将在{$time}秒之后自动跳转到{$url}!";
 130     if (!headers_sent()){
 131         // redirect
 132         if (0 === $time) {
 133             header(‘Location: ‘ . $url);
 134         } else {
 135             header("refresh:{$time};url={$url}");
 136             echo($msg);
 137         }
 138         exit();
 139     } else {
 140         $str    = "<meta http-equiv=‘Refresh‘ content=‘{$time};URL={$url}‘>";
 141         if ($time != 0)
 142             $str .= $msg;
 143         exit($str);
 144     }
 145 }
 146
 147 /**
 148  * 得到网站的网址
 149  */
 150 function getWebUrl() {
 151     $phpself = isset($_SERVER[‘SCRIPT_NAME‘]) ? $_SERVER[‘SCRIPT_NAME‘] : ‘‘;
 152     if(preg_match("/^.*\//", $phpself, $matches)){
 153         return ‘http://‘ . $_SERVER[‘HTTP_HOST‘] . $matches[0];
 154     }else{
 155         return ‘‘;
 156     }
 157 }
 158 /**
 159  * 得到网址的顶级域名
 160  */
 161 function getUrlTopDomain($url){
 162     $domain_array = parse_url($url);
 163     $host = strtolower($domain_array[‘host‘]);
 164     $two_suffix = array(‘.com.cn‘,‘.gov.cn‘,‘.net.cn‘,‘.org.cn‘,‘.ac.cn‘);
 165     foreach($two_suffix as $key=>$value){
 166         preg_match(‘#(.*?)‘.$value.‘$#‘,$host,$match_arr);
 167         if(!empty($match_arr)){
 168             $match_array = $match_arr;
 169             break;
 170         }
 171     }
 172     $host_arr = explode(‘.‘,$host);
 173     if(!empty($match_array)){
 174         $host_arr_last1 = array_pop($host_arr);
 175         $host_arr_last2 = array_pop($host_arr);
 176         $host_arr_last3 = array_pop($host_arr);
 177
 178         return $host_arr_last3.‘.‘.$host_arr_last2.‘.‘.$host_arr_last1;
 179     }else{
 180         $host_arr_last1 = array_pop($host_arr);
 181         $host_arr_last2 = array_pop($host_arr);
 182         return $host_arr_last2.‘.‘.$host_arr_last1;
 183     }
 184 }
 185 /**
 186  * 得到网址的域名
 187  */
 188 function getUrlDomain($url){
 189     $domain_array = parse_url($url);
 190     $host = strtolower($domain_array[‘host‘]);
 191     return $host;
 192 }
 193
 194 /**
 195  * 快速文件数据读取和保存 针对简单类型数据 字符串、数组
 196  * @param string $name 缓存名称
 197  * @param mixed $value 缓存值
 198  * @param string $path 缓存路径
 199  * @return mixed
 200  */
 201 function F($name, $value=‘‘, $path = DATA_PATH){
 202     static $_cache  = array();
 203     $filename       = $path . $name . ‘.php‘;
 204     if (‘‘ !== $value) {
 205         if (is_null($value)) {
 206             // 删除缓存
 207             return false !== strpos($name,‘*‘)?array_map("unlink", glob($filename)):unlink($filename);
 208         } else {
 209             // 缓存数据
 210             $dir            =   dirname($filename);
 211             // 目录不存在则创建
 212             if (!is_dir($dir))
 213                 mkdir($dir,0755,true);
 214             $_cache[$name]  =   $value;
 215             return file_put_contents($filename, strip_whitespace("<?php\treturn " . var_export($value, true) . ";?>"));
 216         }
 217     }
 218     if (isset($_cache[$name]))
 219         return $_cache[$name];
 220     // 获取缓存数据
 221     if (is_file($filename)) {
 222         $value          =   include $filename;
 223         $_cache[$name]  =   $value;
 224     } else {
 225         $value          =   false;
 226     }
 227     return $value;
 228 }
 229
 230 /**
 231  * 快速哈希文件数据读取和保存 针对简单类型数据 字符串、数组
 232  * @param string $name 缓存名称
 233  * @param mixed $value 缓存值
 234  * @param mixed $level 缓存的目录数
 235  * @param string $path 缓存路径
 236  * @return mixed
 237  */
 238 function S($name, $value=‘‘,$time=0,$level=2,$path=CACHE_PATH){
 239     static $_scache  = array();
 240     $name = md5($name);
 241     $haxi_dir = ‘‘;
 242     for($i=0;$i<$level;$i++){
 243         $haxi_dir .= $name[$i].‘/‘;
 244     }
 245     $filename = $path . $haxi_dir . $name . ‘.php‘;
 246
 247     if (‘‘ !== $value) {
 248         if (is_null($value)){
 249             // 删除缓存
 250             return false !== strpos($name,‘*‘) ? array_map("unlink",glob($filename)) : unlink($filename);
 251         } else {
 252             // 缓存数据
 253             $dir  =  dirname($filename);
 254
 255             // 目录不存在则创建
 256             if (!is_dir($dir))
 257                 mkdir($dir,0755,true);
 258
 259             $save_file[‘content‘] = $value;
 260             if($time > 0){
 261                 $save_file[‘expire_time‘] = $_SERVER[‘REQUEST_TIME‘] + $time;
 262             }
 263             $_scache[$name]  =   $value;
 264             return file_put_contents($filename, strip_whitespace("<?php\treturn " . var_export($save_file, true) . ";?>"));
 265         }
 266     }
 267     if (isset($_scache[$name]))
 268         return $_scache[$name];
 269     // 获取缓存数据
 270     if (is_file($filename)) {
 271         $value          =   include $filename;
 272         if(!empty($value[‘expire_time‘]) && $value[‘expire_time‘]<$_SERVER[‘REQUEST_TIME‘]){
 273             strpos($name,‘*‘) ? array_map("unlink",glob($filename)) : unlink($filename);
 274              $return = false;
 275         }
 276         $return = $value[‘content‘];
 277         $_scache[$name]  =   $return;
 278     } else {
 279         $return = false;
 280     }
 281     return $return;
 282 }
 283
 284 /**
 285  * 去除代码中的空白和注释
 286  * @param string $content 代码内容
 287  * @return string
 288  */
 289 function strip_whitespace($content){
 290     $stripStr   = ‘‘;
 291     //分析php源码
 292     $tokens     = token_get_all($content);
 293     $last_space = false;
 294     for ($i = 0, $j = count($tokens); $i < $j; $i++) {
 295         if (is_string($tokens[$i])) {
 296             $last_space = false;
 297             $stripStr  .= $tokens[$i];
 298         } else {
 299             switch ($tokens[$i][0]) {
 300                 //过滤各种PHP注释
 301                 case T_COMMENT:
 302                 case T_DOC_COMMENT:
 303                     break;
 304                 //过滤空格
 305                 case T_WHITESPACE:
 306                     if (!$last_space) {
 307                         $stripStr  .= ‘ ‘;
 308                         $last_space = true;
 309                     }
 310                     break;
 311                 case T_START_HEREDOC:
 312                     $stripStr .= "<<<THINK\n";
 313                     break;
 314                 case T_END_HEREDOC:
 315                     $stripStr .= "THINK;\n";
 316                     for($k = $i+1; $k < $j; $k++) {
 317                         if(is_string($tokens[$k]) && $tokens[$k] == ‘;‘) {
 318                             $i = $k;
 319                             break;
 320                         } else if($tokens[$k][0] == T_CLOSE_TAG) {
 321                             break;
 322                         }
 323                     }
 324                     break;
 325                 default:
 326                     $last_space = false;
 327                     $stripStr  .= $tokens[$i][1];
 328             }
 329         }
 330     }
 331     return $stripStr;
 332 }
 333
 334 /**
 335  * 自动加载
 336  */
 337 function __autoload($class){
 338     if(file_exists(PIGCMS_PATH.‘library/controller/‘.GROUP_NAME.‘/‘.$class.‘.php‘)){
 339         require_once(PIGCMS_PATH.‘library/controller/‘.GROUP_NAME.‘/‘.$class.‘.php‘);
 340         return;
 341     }else if(file_exists(PIGCMS_PATH.‘library/controller/‘.$class.‘.php‘)) {
 342         require_once(PIGCMS_PATH.‘library/controller/‘.$class.‘.php‘);
 343         return;
 344     }else if(file_exists(PIGCMS_PATH.‘library/model/‘.$class.‘.php‘)){
 345         require_once(PIGCMS_PATH.‘library/model/‘.$class.‘.php‘);
 346         return;
 347     }else if(file_exists(PIGCMS_PATH.‘library/class/‘.$class.‘.class.php‘)){
 348         require_once(PIGCMS_PATH.‘library/class/‘.$class.‘.class.php‘);
 349         return;
 350     }else if(file_exists(PIGCMS_PATH.‘source/class/‘.$class.‘.class.php‘)){
 351         require_once(PIGCMS_PATH.‘source/class/‘.$class.‘.class.php‘);
 352         return;
 353     }
 354
 355     $class = strtolower($class);
 356     if(file_exists(PIGCMS_PATH.‘library/controller/‘.GROUP_NAME.‘/‘.$class.‘.php‘)){
 357         require_once(PIGCMS_PATH.‘library/controller/‘.GROUP_NAME.‘/‘.$class.‘.php‘);
 358     }else if(file_exists(PIGCMS_PATH.‘library/controller/‘.$class.‘.php‘)) {
 359         require_once(PIGCMS_PATH.‘library/controller/‘.$class.‘.php‘);
 360     }else if(file_exists(PIGCMS_PATH.‘library/model/‘.$class.‘.php‘)){
 361         require_once(PIGCMS_PATH.‘library/model/‘.$class.‘.php‘);
 362     }else if(file_exists(PIGCMS_PATH.‘library/class/‘.$class.‘.class.php‘)){
 363         require_once(PIGCMS_PATH.‘library/class/‘.$class.‘.class.php‘);
 364     }else if(file_exists(PIGCMS_PATH.‘source/class/‘.$class.‘.class.php‘)){
 365
 366         require_once(PIGCMS_PATH.‘source/class/‘.$class.‘.class.php‘);
 367     }else{
 368         pigcms_tips($class . ‘ 类不存在。‘,‘none‘);
 369     }
 370 }
 371
 372 /**
 373  * 加载文件
 374  *
 375  */
 376 function import($file){
 377     $file_arr = explode(‘.‘,$file);
 378     $file_arr_count = count($file_arr);
 379     if(class_exists($file_arr[$file_arr_count-1],false)) return false;
 380     switch($file_arr_count){
 381         case 1:
 382             if(substr($file_arr[0],0,1) == ‘@‘){
 383                 $load_file = PIGCMS_PATH.‘library/class/‘.substr($file_arr[0],1).‘.class.php‘;
 384             }else{
 385                 $load_file = PIGCMS_PATH.‘source/class/‘.$file_arr[0].‘.class.php‘;
 386             }
 387             break;
 388         case 2:
 389             if(substr($file_arr[0],0,1) == ‘@‘){
 390                 $load_file = PIGCMS_PATH.‘library/‘.substr($file_arr[0],1).‘/‘.$file_arr[1].‘.class.php‘;
 391             }else{
 392                 $load_file = PIGCMS_PATH.‘source/‘.$file_arr[0].‘/‘.$file_arr[1].‘.class.php‘;
 393             }
 394             break;
 395         case 3:
 396             $load_file = PIGCMS_PATH.$file_arr[0].‘/‘.$file_arr[1].‘/‘.$file_arr[2].‘.class.php‘;
 397             break;
 398         default:
 399             $file_data = ‘‘;
 400             foreach($file_arr as $val){
 401                 if($file_data == ‘‘){
 402                     $file_data = $val;
 403                 }else{
 404                     $file_data .= ‘/‘.$val;
 405                 }
 406             }
 407             $load_file = PIGCMS_PATH.$file_data.‘.class.php‘;
 408     }
 409     require_file($load_file);
 410 }
 411
 412 /**
 413  * 调用数据库类
 414  */
 415 function D($table=‘‘,$other=array()){
 416     static $db_list;
 417     import(‘source.class.mysql‘);
 418     if(empty($other)){
 419         if (!empty($table) && isset($db_list[$table])) {
 420             return $db_list[$table];
 421         }
 422         $db = new mysql();
 423
 424         if($table){
 425             $db_list[$table] = $db;
 426             $db->table($table);
 427         }
 428     }else{
 429         $db = new mysql($other);
 430         $db->table($table);
 431     }
 432
 433
 434     return $db;
 435 }
 436
 437 /**
 438  * 引入并使用控制器的方法
 439  */
 440 function R($group,$mode,$action){
 441     $mode = strtolower($mode);
 442     $mode_file = PIGCMS_PATH.‘library/controller/‘.$group.‘/‘.$mode.‘_controller.php‘;
 443     if(file_exists($mode_file)){
 444         $mode_name = $mode.‘_controller‘;
 445         require($mode_file);
 446         if(!class_exists($mode_name)){
 447             pigcms_tips($mode_name.‘ 类不存在。‘,‘none‘);
 448         }
 449         $mode_obj = new $mode_name;
 450         if(!method_exists($mode_obj,$action)){
 451             if(method_exists($mode_obj,‘_empty‘)){
 452                 $action = ‘_empty‘;
 453             }else{
 454                 pigcms_tips($action.‘ 方法不存在。‘,‘none‘);
 455             }
 456         }
 457         $mode_obj->$action();
 458     }else if(file_exists(TPL_PATH.‘/‘.ACTION_NAME.‘.php‘)){
 459         display();
 460     }else{
 461         if(DEBUG){
 462             pigcms_tips($mode_file.‘ 控制器文件不存在。‘,‘none‘);
 463         }else{
 464             pigcms_tips($group.‘分组 控制器 ‘.$mode.‘ 文件不存在。‘,‘none‘);
 465         }
 466     }
 467 }
 468 /**
 469  * 获得系统参数
 470  */
 471 function option($name=null,$value=null){
 472     global $_G;
 473      // 无参数时获取所有
 474     if(empty($name)){
 475         return $_G;
 476     }
 477     // 优先执行设置获取或赋值
 478     if(is_string($name)){
 479         if (!strpos($name,‘.‘)) {
 480             $name = strtolower($name);
 481             if (is_null($value))
 482                 return isset($_G[$name]) ? $_G[$name] : null;
 483             $_G[$name] = $value;
 484             return;
 485         }
 486         // 二维数组设置和获取支持
 487         $name = explode(‘.‘, $name);
 488         $name[0]   =  strtolower($name[0]);
 489         if (is_null($value))
 490             return isset($_G[$name[0]][$name[1]]) ? $_G[$name[0]][$name[1]] : null;
 491         $_G[$name[0]][$name[1]] = $value;
 492         return;
 493     }
 494     return null; // 避免非法参数
 495 }
 496 /**
 497  * 引入并实例化MODEL类
 498  */
 499 function M($model){
 500     $lower_model = strtolower($model);
 501     $model_file = PIGCMS_PATH.‘library/model/‘.$lower_model.‘_model.php‘;
 502     if(file_exists($model_file)){
 503         $model_name = $lower_model.‘_model‘;
 504         if(!class_exists($model_name,false)){
 505             require($model_file);
 506             if(!class_exists($model_name)){
 507                 pigcms_tips($model_name.‘ 类不存在。‘,‘none‘);
 508             }
 509         }
 510         $model_obj = new $model_name($model);
 511         return $model_obj;
 512     }else{
 513           $model_file = PIGCMS_PATH.‘source/plugins/bonus/model/‘.$lower_model.‘_model.php‘;
 514           if (file_exists($model_file)) {
 515                 $model_name = $lower_model.‘_model‘;
 516                 if(!class_exists($model_name,false)){
 517                     require($model_file);
 518                     if(!class_exists($model_name)){
 519                         pigcms_tips($model_name.‘ 类不存在。‘,‘none‘);
 520                     }
 521                 }
 522         $model_obj = new $model_name($model);
 523         return $model_obj;
 524           }else{
 525
 526              pigcms_tips($model_file.‘ 文件不存在。‘,‘none‘);
 527           }
 528     }
 529 }
 530
 531 function datetime($unix_time){
 532     return date(‘Y-m-d H:i:s‘,$unix_time);
 533 }
 534
 535
 536 function W($model){
 537     $lower_model = strtolower($model);//source/plugins/bonus/model/bonus_model.php‘
 538     $model_file = PIGCMS_PATH.‘source/plugins/bonus/model/‘.$lower_model.‘_model.php‘;
 539     if(file_exists($model_file)){
 540         $model_name = $lower_model.‘_model‘;
 541         if(!class_exists($model_name,false)){
 542             require($model_file);
 543             if(!class_exists($model_name)){
 544                 pigcms_tips($model_name.‘ 类不存在。‘,‘none‘);
 545             }
 546         }
 547         $model_obj = new $model_name($model);
 548         return $model_obj;
 549     }else{
 550         pigcms_tips($model_file.‘ 文件不存在。‘,‘none‘);
 551     }
 552 }
 553 /**
 554  * 浏览器友好的变量输出
 555  * @param mixed $var 变量
 556  * @param boolean $echo 是否输出 默认为True 如果为false 则返回输出字符串
 557  * @param string $label 标签 默认为空
 558  * @param boolean $strict 是否严谨 默认为true
 559  * @return void|string
 560  */
 561 function dump($var, $echo=true, $label=null, $strict=true) {
 562     $label = ($label === null) ? ‘‘ : rtrim($label) . ‘ ‘;
 563     if (!$strict) {
 564         if (ini_get(‘html_errors‘)) {
 565             $output = print_r($var, true);
 566             $output = ‘<pre>‘ . $label . htmlspecialchars($output, ENT_QUOTES) . ‘</pre>‘;
 567         } else {
 568             $output = $label . print_r($var, true);
 569         }
 570     } else {
 571         ob_start();
 572         var_dump($var);
 573         $output = ob_get_clean();
 574         if (!extension_loaded(‘xdebug‘)) {
 575             $output = preg_replace(‘/\]\=\>\n(\s+)/m‘, ‘] => ‘, $output);
 576             $output = ‘<pre>‘ . $label . htmlspecialchars($output, ENT_QUOTES) . ‘</pre>‘;
 577         }
 578     }
 579     if ($echo) {
 580         echo($output);
 581         return null;
 582     }else
 583         return $output;
 584 }
 585
 586 /**
 587  * 引入模板显示模板
 588  */
 589 /*function display($tpl=‘‘){
 590     global $_G;
 591     $now_group = GROUP_NAME;
 592     $now_module = MODULE_NAME;
 593     $now_action = ACTION_NAME;
 594     $now_theme = $_G[‘config‘][‘theme_‘.$now_group.‘_group‘];
 595
 596
 597     if(empty($now_theme)) $now_theme = ‘default‘;
 598     if(empty($tpl)){
 599         $tpl_file = $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.$now_action.‘.php‘;
 600     }else{
 601         $tpl_arr = explode(‘:‘,$tpl);
 602         $tpl_arr_count = count($tpl_arr);
 603         switch($tpl_arr_count){
 604             case 1:
 605                 if($now_group == ‘wap‘ && option(‘config.is_diy_template‘)){
 606
 607                     if(file_exists(TPL_PATH.$now_group.‘/‘.$now_theme.‘/theme/‘.$tpl_arr[$tpl_arr_count-1].‘.php‘)){
 608                         if(USE_FRAMEWORK){
 609                             $tpl_file = $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.‘/theme/‘.$tpl_arr[$tpl_arr_count-1].‘.php‘;
 610                         }else{
 611                             $tpl_file = $now_group.‘/‘.$now_theme.‘/theme/‘.$tpl_arr[$tpl_arr_count-1].‘.php‘;
 612                         }
 613                     }else{
 614
 615                         if(USE_FRAMEWORK){
 616                             $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 617                         }else{
 618                             $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 619                         }
 620
 621                     }
 622
 623                 }else{
 624
 625                     if(USE_FRAMEWORK){
 626                         $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 627                     }else{
 628                         $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 629                     }
 630
 631                 }
 632
 633                 break;
 634             case 2:
 635                 $tpl_file = $now_group.‘/‘.$now_theme.‘/‘.$tpl_arr[0].‘/‘.$tpl_arr[1].‘.php‘;
 636                 break;
 637             case 3:
 638                 $tpl_file = $tpl_arr[0].‘/‘.$_G[‘config‘][‘theme_‘.$tpl_arr[0].‘_group‘].‘/‘.$tpl_arr[1].‘/‘.$tpl_arr[2].‘.php‘;
 639                 break;
 640             default:
 641                 pigcms_tips(‘参数过多,无法实例化模板!‘);
 642         }
 643         if($tpl_arr_count == 1){
 644
 645         }else if($tpl_arr_count == 2){
 646
 647         }else if($tpl_arr_count == 3){
 648
 649         }
 650     }
 651
 652     if(file_exists(TPL_PATH.$tpl_file)){
 653         return TPL_PATH.$tpl_file;
 654     }else{
 655         if(DEBUG){
 656             pigcms_tips(‘模板文件 template/‘.$tpl_file.‘ 文件不存在。‘,‘none‘);
 657         }else{
 658             pigcms_tips(‘模板文件 不存在!‘);
 659         }
 660     }
 661 }*/
 662 function plu_url($m,$c)
 663 {
 664         global $_G;
 665
 666         $return_url = $_G[‘config‘][‘site_url‘].‘/‘;
 667        $return_url.=  "./plugin.php?plugin=site&p=user&m=$m&c=$c";
 668       echo $return_url;
 669
 670 }
 671 function disp($m,$c)
 672 {
 673     $tpl_file =‘./source/plugins/bonus/view/‘.$m.‘/‘.$c.‘.php‘;
 674     return $tpl_file;
 675 }
 676
 677 function disps($do,$m,$c)
 678 {
 679     $tpl_file =‘./source/plugins/‘.$do.‘/view/‘.$m.‘/‘.$c.‘.php‘;
 680     return $tpl_file;
 681 }
 682
 683 function display($tpl=‘‘){
 684     global $_G;
 685     $now_group = GROUP_NAME;
 686     $now_module = MODULE_NAME;
 687     $now_action = ACTION_NAME;
 688     $now_theme = $_G[‘config‘][‘theme_‘.$now_group.‘_group‘];
 689
 690
 691     if(empty($now_theme)) $now_theme = ‘default‘;
 692     if(empty($tpl)){
 693         $tpl_file = $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.$now_action.‘.php‘;
 694     }else{
 695         $tpl_arr = explode(‘:‘,$tpl);
 696         $tpl_arr_count = count($tpl_arr);
 697         switch($tpl_arr_count){
 698             case 1:
 699                 if($now_group == ‘wap‘ && option(‘config.is_diy_template‘)){
 700
 701                     if(file_exists(TPL_PATH.$now_group.‘/‘.$now_theme.‘/theme/‘.$tpl_arr[$tpl_arr_count-1].‘.php‘)){
 702                         if(USE_FRAMEWORK){
 703                             $tpl_file = $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.‘/theme/‘.$tpl_arr[$tpl_arr_count-1].‘.php‘;
 704                         }else{
 705                             $tpl_file = $now_group.‘/‘.$now_theme.‘/theme/‘.$tpl_arr[$tpl_arr_count-1].‘.php‘;
 706                         }
 707                     }else{
 708
 709                         if(USE_FRAMEWORK){
 710                             $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 711                         }else{
 712                             $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 713                         }
 714
 715                     }
 716
 717                 }else{
 718
 719                     if(USE_FRAMEWORK){
 720                         $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$now_module.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 721                     }else{
 722                         $tpl_file = (strpos($tpl_arr[0],‘/‘)===false) ? $now_group.‘/‘.$now_theme.‘/‘.$tpl_arr[0].‘.php‘ : $tpl_arr[0];
 723                     }
 724
 725                 }
 726
 727                 break;
 728             case 2:
 729                 $tpl_file = $now_group.‘/‘.$now_theme.‘/‘.$tpl_arr[0].‘/‘.$tpl_arr[1].‘.php‘;
 730                 break;
 731             case 3:
 732                 $tpl_file = $tpl_arr[0].‘/‘.$_G[‘config‘][‘theme_‘.$tpl_arr[0].‘_group‘].‘/‘.$tpl_arr[1].‘/‘.$tpl_arr[2].‘.php‘;
 733                 break;
 734             default:
 735               $tpl_file =‘./source/plugins/‘.$tpl_arr[2].‘/view/‘.$tpl_arr[4].‘/‘.$tpl_arr[5].‘.php‘;
 736               //echo $tpl_file;die;
 737               //$tpl_file =‘./source/plugins/bonus/view/‘.$tpl_arr[4].‘/‘.$tpl_arr[5].‘.php‘;
 738
 739         }
 740         if($tpl_arr_count == 1){
 741
 742         }else if($tpl_arr_count == 2){
 743
 744         }else if($tpl_arr_count == 3){
 745
 746         }
 747     }
 748     //var_dump(TPL_PATH.$tpl_file);die;
 749     if(file_exists(TPL_PATH.$tpl_file)){
 750         return TPL_PATH.$tpl_file;
 751     }else{
 752         if(DEBUG){
 753             pigcms_tips(‘模板文件 template/‘.$tpl_file.‘ 文件不存在。‘,‘none‘);
 754         }else{
 755             return $tpl_file;
 756             pigcms_tips(‘模板文件 不存在!‘);
 757         }
 758     }
 759 }
 760
 761 /**
 762  * 生成URL
 763  */
 764 function url($url=‘‘,$param=array(),$showDomain=false){
 765     global $_G;
 766     if($showDomain){
 767         $return_url = $_G[‘config‘][‘site_url‘].‘/‘;
 768     }else{
 769         $return_url = getWebUrl();
 770     }
 771     $url_arr = explode(‘:‘,$url);
 772
 773     $url_arr_count = count($url_arr);
 774     switch($url_arr_count){
 775         case 1:
 776             $return_url .= ltrim($_SERVER[‘SCRIPT_NAME‘],‘/‘).‘?c=‘.MODULE_NAME.‘&a=‘.$url_arr[0];
 777             break;
 778         case 2:
 779             $return_url .= ltrim($_SERVER[‘SCRIPT_NAME‘],‘/‘).‘?c=‘.$url_arr[0].‘&a=‘.$url_arr[1];
 780             break;
 781         case 3:
 782             $return_url .= $url_arr[0].‘.php‘.‘?c=‘.$url_arr[1].‘&a=‘.$url_arr[2];
 783             break;
 784         case 4:
 785             pigcms_tips(‘参数过多,只允许接收3个参数!‘);
 786     }
 787     if($param){
 788         $return_url .= ‘&‘.http_build_query($param);
 789     }
 790     return $return_url;
 791 }
 792 function urls($u)
 793 {
 794     //var_dump($u);
 795
 796     $a ="index.php?c=category&a=index&id=$u";
 797 return $a;
 798 }
 799 //将url转换成静态url
 800 function url_rewrite($file,$params = array (),$html = "",$rewrite = true) {
 801      if ($rewrite) {
 802         if(strpos($file,‘:‘)){
 803             $file     = substr($file, 0, strpos($file, ‘:‘));
 804             //echo $file;die;
 805             $url = option(‘config.site_url‘).‘/index.php?c=‘ . $file;
 806         }else{
 807             $url = ($file == ‘index‘) ? ‘‘ : ‘/index.php?c=‘ . $file;
 808         }
 809          $url .=‘&index&id=‘;
 810         if (!empty ($html)) {
 811              //$url .= ‘.‘ . $html;
 812         }
 813
 814         if (!empty ($params) && is_array($params)) {
 815             $url .= implode(‘/‘, $params);
 816         }
 817
 818         if($file == ‘goods‘ || $file == ‘store‘){
 819             //$url .= ‘.‘ . ‘html‘;
 820         }
 821
 822         /*foreach ($params as $key => $value) {  index.php?c=goods&a=index&id=$1
 823             $url .= ‘/‘.$key.‘/‘.$value;
 824         }*/
 825
 826      } else {
 827         $url     = url($file,$params);
 828     }
 829     //echo $url;die;
 830     return $url;
 831 }
 832 //将url转换成静态url
 833 function url_rewrites($file,$params = array (),$html = "",$rewrite = true) {
 834      if ($rewrite) {
 835         if(strpos($file,‘:‘)){
 836             $file     = substr($file, 0, strpos($file, ‘:‘));
 837             $url = option(‘config.site_url‘).‘/‘ . $file;
 838         }else{
 839             $url = ($file == ‘index‘) ? ‘‘ : ‘/‘ . $file;
 840         }
 841
 842         if (!empty ($html)) {
 843              $url .= ‘.‘ . $html;
 844         }
 845
 846         if (!empty ($params) && is_array($params)) {
 847             $url .= ‘/‘ . implode(‘/‘, $params);
 848         }
 849
 850         if($file == ‘goods‘ || $file == ‘store‘){
 851             $url .= ‘.‘ . ‘html‘;
 852         }
 853
 854         /*foreach ($params as $key => $value) {
 855             $url .= ‘/‘.$key.‘/‘.$value;
 856         }*/
 857
 858      } else {
 859         $url     = url($file,$params);
 860     }
 861     return $url;
 862 }
 863
 864 /**
 865  * 生成URL并输出
 866  */
 867 function dourl($url=‘‘,$param=array(),$showDomain=false){
 868     echo url($url,$param,$showDomain);
 869 }
 870
 871 /**
 872  * 得到字符串的一部分
 873  */
 874 function msubstr($str, $start=0, $length,$suffix=true,$charset="utf-8"){
 875     if(function_exists("mb_substr")){
 876         if ($suffix && strlen($str)>$length)
 877             return mb_substr($str, $start, $length, $charset)."...";
 878         else
 879             return mb_substr($str, $start, $length, $charset);
 880     }
 881     elseif(function_exists(‘iconv_substr‘)) {
 882         if ($suffix && strlen($str)>$length)
 883             return iconv_substr($str,$start,$length,$charset)."...";
 884         else
 885             return iconv_substr($str,$start,$length,$charset);
 886     }
 887     $re[‘utf-8‘]   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
 888     $re[‘gb2312‘] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
 889     $re[‘gbk‘]    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
 890     $re[‘big5‘]   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
 891     preg_match_all($re[$charset], $str, $match);
 892     $slice = join("",array_slice($match[0], $start, $length));
 893     if($suffix) return $slice."…";
 894     return $slice;
 895 }
 896
 897 /**
 898  * 得到字符串的utf8格式
 899  */
 900 function get_utf8($word){
 901     if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true){
 902         return $word;
 903     }else{
 904         return iconv(‘gbk‘,‘utf-8‘,$word);
 905     }
 906 }
 907
 908 /**
 909  * JSON返回
 910  *
 911  * param err_code 返回的错误编码
 912  * param err_msg  返回的错误信息
 913  * param err_dom  返回的DOM标识
 914  */
 915 function clear_html($array)
 916
 917      {
 918
 919             if (!is_array($array))
 920
 921                 return trim(htmlspecialchars($array, ENT_QUOTES));
 922
 923             foreach ($array as $key => $value) {
 924
 925                 if (is_array($value)) {
 926
 927                     $this->clear_html($value);
 928
 929                 } else {
 930
 931                     $array[$key] = trim(htmlspecialchars($value, ENT_QUOTES));
 932
 933                 }
 934
 935             }
 936
 937             return $array;
 938
 939      }
 940
 941
 942
 943 function dexit($data = ‘‘)
 944
 945     {
 946
 947             if (is_array($data)) {
 948
 949                 echo json_encode($data);
 950
 951             } else {
 952
 953                 echo $data;
 954
 955             }
 956
 957             exit();
 958
 959     }
 960
 961
 962 function json_return($err_code,$err_msg=‘‘,$err_dom=‘‘){
 963     $json_arr[‘err_code‘] = $err_code;
 964     if($err_msg) $json_arr[‘err_msg‘] = $err_msg;
 965     if($err_dom) $json_arr[‘err_dom‘] = $err_dom;
 966     if(!headers_sent()) header(‘Content-type:application/json‘);
 967     exit(json_encode($json_arr));
 968 }
 969
 970
 971 /**
 972  * 检测插件是否存在
 973  *
 974  * @param string $plugin 插件名称
 975  * @param string $attr 参数
 976  */
 977 /*function check_plugin($plugin){
 978     if (is_string($plugin) && file_exists(PIGCMS_PATH.‘source/plugins/‘.$plugin.‘/‘.$plugin.‘.php‘)){
 979         return true;
 980     }else{
 981         return false;
 982     }
 983 }*/
 984 function check_plugin($plugin){
 985     if (is_string($plugin) && file_exists(PIGCMS_PATH.‘source/plugins/‘.$plugin.‘.php‘)){
 986         return true;
 987     }else{
 988         return false;
 989     }
 990 }
 991
 992 /**
 993  * 得到插件的url
 994  *
 995  * @param string $plugin 插件名称
 996  * @param string $attr 参数
 997  */
 998 function url_plugin($plugin,$attr=‘‘){
 999     global $_G;
1000     if(!defined(‘IS_MOBILE‘)){
1001         $site_url = $_G[‘config‘][‘site_url‘];
1002     }else{
1003         $site_url = $_G[‘config‘][‘mobile_site_url‘];
1004     }
1005     if(!empty($attr)){
1006         return $site_url.‘/index.php?plugin=‘.$plugin.‘&‘.$attr;
1007     }else{
1008         return $site_url.‘/index.php?plugin=‘.$plugin;
1009     }
1010 }
1011
1012 /**
1013  * 得到文件的大小
1014  */
1015 function getSize($size){
1016     $kb = 1024;
1017     $mb = 1024*$kb;
1018     $gb = 1024*$mb;
1019     $tb = 1024*$gb;
1020     if($size<$kb){
1021         return $size." B";
1022     }else if($size<$mb){
1023         return round($size/$kb,2)." KB";
1024     }else if($size<$gb){
1025         return round($size/$mb,2)." MB";
1026     }else if($size<$tb){
1027         return round($size/$gb,2)." GB";
1028     }else{
1029         return round($size/$tb,2)." TB";
1030     }
1031 }
1032
1033 /**
1034  * 判断是否手机访问
1035  */
1036 function is_mobile(){
1037     if(preg_match(‘/(iphone|ipad|ipod|android)/i‘, strtolower($_SERVER[‘HTTP_USER_AGENT‘]))){
1038         return true;
1039     }else{
1040         return false;
1041     }
1042 }
1043 /**
1044  * 判断是否微信访问
1045  */
1046 function is_weixin(){
1047     if(strpos($_SERVER[‘HTTP_USER_AGENT‘],‘MicroMessenger‘) !== false){
1048         return true;
1049     }else{
1050         return false;
1051     }
1052 }
1053 /**
1054  * 得到附件的网址
1055  * is_remote,是否是远程,否时直接用本地图片
1056  */
1057 function getAttachmentUrl($fileUrl, $is_remote = true){
1058
1059     if(empty($fileUrl)){
1060         return ‘‘;
1061     }else{
1062         // 如果已经是完整url地址,则不做处理
1063         if (strstr($fileUrl, ‘http://‘) !== false) {
1064             return $fileUrl;
1065         }
1066
1067         $attachment_upload_type = option(‘config.attachment_upload_type‘);
1068         $url = option(‘config.site_url‘) . ‘/upload/‘;
1069         if ($attachment_upload_type == ‘1‘ && $is_remote) {
1070             $url = ‘http://‘ . option(‘config.attachment_up_domainname‘) . ‘/‘;
1071         }
1072
1073         return $url . $fileUrl;
1074     }
1075 }
1076 /**
1077  * 得到附件相对应网站目录的文件地址
1078  */
1079 function getAttachmentFilePath($fileUrl){
1080     return PIGCMS_PATH.‘upload/‘.$fileUrl;
1081 }
1082
1083 /**
1084  * 获取客户端IP地址
1085  * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
1086  * @return mixed
1087  */
1088 function get_client_ip($type = 0) {
1089     $type       =  $type ? 1 : 0;
1090     static $ip  =   NULL;
1091     if ($ip !== NULL) return $ip[$type];
1092     if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) {
1093         $arr    =   explode(‘,‘, $_SERVER[‘HTTP_X_FORWARDED_FOR‘]);
1094         $pos    =   array_search(‘unknown‘,$arr);
1095         if(false !== $pos) unset($arr[$pos]);
1096         $ip     =   trim($arr[0]);
1097     }elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) {
1098         $ip     =   $_SERVER[‘HTTP_CLIENT_IP‘];
1099     }elseif (isset($_SERVER[‘REMOTE_ADDR‘])) {
1100         $ip     =   $_SERVER[‘REMOTE_ADDR‘];
1101     }
1102     // IP地址合法验证
1103     $long = sprintf("%u",ip2long($ip));
1104     $ip   = $long ? array($ip, $long) : array(‘0.0.0.0‘, 0);
1105     return $ip[$type];
1106 }
1107
1108
1109 /**
1110  * 等比例绽放图片大小
1111  */
1112  function drawImg($from,$w=100,$h=100,$newfile){
1113
1114     $info = getimagesize($from);
1115
1116     switch ($info[2]){
1117         case 1:
1118             $im = imagecreatefromgif($from);
1119             break;
1120
1121         case 2:
1122             $im = imagecreatefromjpeg($from);
1123             break;
1124
1125         case 3:
1126             $im = imagecreatefrompng($from);
1127             break;
1128
1129         default:
1130             exit(‘不支持的图像格式‘);
1131             break;
1132     }
1133
1134     $temp = pathinfo($from);
1135     $name = $temp["basename"];//文件名
1136     $dir = $temp["dirname"];//文件所在的文件夹
1137     $extension = $temp["extension"];//文件扩展名
1138     $width = $info[0];//获取图片宽度
1139     $height = $info[1];//获取图片高度
1140     $per1 = round($width/$height,2);//计算原图长宽比
1141     $per2 = round($w/$h,2);//计算缩略图长宽比
1142
1143     //计算缩放比例
1144     if($per1>$per2||$per1==$per2) {
1145         //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先
1146         $per=$w/$width;
1147     }
1148
1149     if($per1<$per2) {
1150         //原图长宽比小于缩略图长宽比,则按照高度优先
1151         $per=$h/$height;
1152     }
1153     $temp_w = intval($width*$per);//计算原图缩放后的宽度
1154     $temp_h = intval($height*$per);//计算原图缩放后的高度
1155     $dst_im = imagecreatetruecolor($temp_w, $temp_h);
1156
1157     //调整大小
1158     imagecopyresized($dst_im, $im, 0, 0, 0, 0, $temp_w, $temp_h, $width, $height);
1159     //输出缩小后的图像
1160     //exit($newfile);
1161
1162     imagejpeg($dst_im,$dir.‘/‘.$newfile);
1163     imagedestroy($dst_im);
1164     imagedestroy($im);
1165 }
1166
1167 /**
1168  * 获取图片不包含域名,如果未使用远程存储,将upload目录一并去掉
1169  */
1170 function getAttachment($file) {
1171     if (empty($file)) {
1172         return;
1173     }
1174
1175     $search = trim(option(‘config.site_url‘), ‘/‘) . ‘/upload/‘;
1176     $attachment_upload_type = option(‘config.attachment_upload_type‘);
1177     if ($attachment_upload_type == ‘1‘) {
1178         $search = trim(‘http://‘ . option(‘config.attachment_up_domainname‘), ‘/‘) . ‘/‘;
1179     }
1180
1181     $file = trim(str_replace($search, ‘‘, $file), ‘/‘);
1182     return $file;
1183 }
1184
1185
1186 //im聊天相关
1187 /**
1188  *   加密串
1189  */
1190 function get_encrypt_key($array,$app_key){
1191     $new_arr = array();
1192     ksort($array);
1193     foreach($array as $key=>$value){
1194         $new_arr[] = $key.‘=‘.$value;
1195     }
1196     $new_arr[] = ‘app_key=‘.$app_key;
1197
1198     $string = implode(‘&‘,$new_arr);
1199     return md5($string);
1200 }
1201
1202 /**
1203  * CURL POST
1204  *
1205  * param url 抓取的URL
1206  * param data post的数组
1207  */
1208 function curl_post($url,$data){
1209     $ch = curl_init();
1210     $headers[] = "Accept-Charset: utf-8";
1211     curl_setopt($ch, CURLOPT_URL, $url);
1212     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
1213     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
1214     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
1215     curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
1216     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1217     curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)‘);
1218     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
1219     curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
1220     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
1221     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
1222     $result = curl_exec($ch);
1223
1224     //关闭curl
1225     curl_close($ch);
1226
1227     return $result;
1228 }
1229 /**
1230  * 微信API CURL POST
1231  *
1232  * param url 抓取的URL
1233  * param data post的数组
1234  */
1235 function api_curl_post($url,$data){
1236     $result = curl_post($url,$data);
1237
1238     $result_arr = json_decode($result,true);
1239     return $result_arr;
1240 }
1241
1242 /**
1243  * JSON返回
1244  *
1245  * param err_code 返回的错误编码
1246  * param err_msg  返回的错误信息
1247  * param err_dom  返回的DOM标识
1248  */
1249 function error_json_return($err_code,$err_msg){
1250     $json_arr[‘err_code‘] = $err_code;
1251     $json_arr[‘err_msg‘] = $err_msg;
1252     exit(json_encode($json_arr));
1253 }
1254 function ok_json_return($json_arr){
1255     $json_arr[‘err_code‘] = 0;
1256     exit(json_encode($json_arr));
1257 }
1258 function ok_jsonp_return($json_arr){
1259     $json_arr[‘err_code‘] = 0;
1260     exit($_GET[‘callback‘].‘(‘.json_encode($json_arr).‘)‘);
1261 }
1262 //获取im聊天url
1263 function getImUrl($userId,$storeId){
1264     $is_service     = D(‘Service‘)->where("status = 1 AND openid != ‘‘ AND store_id=$storeId")->find();
1265
1266     if(!empty($is_service) && $_SESSION[‘wap_user‘][‘app_id‘] == 0){
1267         $key = get_encrypt_key(array(‘app_id‘=>option(‘config.im_appid‘),‘openid‘=>$userId),option(‘config.im_appkey‘));
1268         $url = IM_SERVER_PATH.‘?app_id=‘.option(‘config.im_appid‘).‘&openid=‘.$userId.‘&key=‘.$key.‘#serviceList_‘.$storeId;
1269     }else{
1270         $store = D(‘Store‘)->where("status = 1 AND store_id = ‘" . $storeId . "‘")->find();
1271         $user_tmp = $_SESSION[‘wap_user‘];
1272
1273         /*if (empty($_SESSION[‘wap_user‘])) {
1274             $user_tmp = D(‘User‘)->where("uid = ‘" . $store[‘uid‘] . "‘")->find();
1275         }*/
1276
1277         if ($user_tmp[‘app_id‘] == 1 && !empty($store[‘open_service‘]) && !empty($store[‘source_site_url‘]) && !empty($store[‘token‘])) {
1278             $url = $store[‘source_site_url‘] . ‘/index.php?g=Wap&m=Service&a=index&token=‘ . $store[‘token‘] . ‘&wecha_id=‘;
1279         } else if ($user_tmp[‘app_id‘] == 2 && !empty($store[‘open_service‘])) {
1280             $url = $store[‘source_site_url‘] . ‘/wap.php?c=Weidian&a=getImUrl&token=‘.$store[‘token‘].‘&wecha_id=‘.$_SESSION[‘wap_user‘][‘third_id‘];
1281         } else {
1282             $url     = ‘‘;
1283         }
1284     }
1285
1286     return $url;
1287 }
1288
1289 /**
1290  * 根据时间,返回状态
1291  * 当前时间在两个时间内:正在进行,当前时间大于开始时间:未开始,当前时间大于结束时间:已结束
1292  */
1293 function getTimeType($start_time, $end_time) {
1294     if (empty($start_time) && empty($end_time)) {
1295         return ‘‘;
1296     }
1297
1298     // 时间修正
1299     if ($start_time > $end_time) {
1300         $tmp = $end_time;
1301         $end_time = $start_time;
1302         $start_time = $tmp;
1303     }
1304
1305     $time = time();
1306     if ($time >= $start_time && $time <= $end_time) {
1307         return ‘正在进行‘;
1308     } else if ($time < $start_time) {
1309         return ‘未开始‘;
1310     } else if ($time > $end_time) {
1311         return ‘已结束‘;
1312     }
1313
1314     return ‘‘;
1315 }
1316
1317 /**
1318  * 根据满减/送信息,返回格式化字条串
1319  */
1320 function getRewardStr($reward) {
1321     global $config;
1322
1323     $str = ‘满‘ . $reward[‘money‘];
1324
1325     if ($reward[‘cash‘]) {
1326         $str .= ‘,减‘ . $reward[‘cash‘] . ‘元‘;
1327     }
1328
1329     if ($reward[‘postage‘]) {
1330         $str .= ‘,免邮费‘;
1331     }
1332
1333     if ($reward[‘score‘]) {
1334         $str .= ‘,送‘ . $reward[‘score‘] . ‘积分‘;
1335     }
1336
1337     if ($reward[‘coupon‘]) {
1338         $str .= ‘,送优惠券‘;
1339
1340         $url = ‘‘;
1341         if (GROUP_NAME != ‘wap‘) {
1342             $url = url(‘coupon:index‘, array(‘id‘ => $reward[‘coupon‘][‘id‘]));
1343         } else {
1344             $url = $config[‘wap_site_url‘] . ‘/coupon_detail.php?id=‘ . $reward[‘coupon‘][‘id‘];
1345         }
1346         $str .= ‘<a href="‘ . $url . ‘" target="_blank">‘ . $reward[‘coupon‘][‘name‘] . ‘</a>‘;
1347     }
1348
1349     if ($reward[‘present‘]) {
1350         $str .= ‘,赠送产品:‘;
1351         foreach ($reward[‘present‘] as $product) {
1352             $url = ‘‘;
1353             if (GROUP_NAME != ‘wap‘) {
1354                 $url = url_rewrite(‘goods:index‘, array(‘id‘ => $product[‘product_id‘]));
1355             } else {
1356                 $url = $config[‘wap_site_url‘] . ‘/good.php?id=‘ .  $product[‘product_id‘];
1357             }
1358             $str .= ‘<a href="‘ . $url . ‘" target="_blank">‘ . $product[‘name‘] . ‘</a> ‘;
1359         }
1360     }
1361
1362     return $str;
1363 }
1364
1365
1366
1367 //对象转换为数组
1368 function object_array($array) {
1369     if(is_object($array)) {
1370         $array = (array)$array;
1371     } if(is_array($array)) {
1372         foreach($array as $key=>$value) {
1373             $array[$key] = object_array($value);
1374         }
1375     }
1376     return $array;
1377 }
1378
1379
1380 //获取用户当前登录位置
1381 function show_distance(){
1382
1383     if($_COOKIE[‘Web_user‘]) {
1384         $array = object_array(json_decode($_COOKIE[‘Web_user‘]));
1385         $array[‘status‘] = true;
1386     } else {
1387         $array = array(‘status‘=>false);
1388     }
1389     return $array;
1390 }
1391
1392 // 隐藏评论人信息
1393 function anonymous($str, $len1 = 2, $len2 = 1) {
1394     if (mb_strlen($str, ‘utf-8‘) < 4) {
1395         $return_str = mb_substr($str, 0, 1, ‘utf-8‘);
1396         $return_str .= ‘**‘;
1397     } else {
1398         $return_str = mb_substr($str, 0, $len1, ‘utf-8‘);
1399         $return_str .= ‘**‘;
1400         $return_str .= mb_substr($str, -1 * $len2, $len2, ‘utf-8‘);
1401     }
1402     return $return_str;
1403 }
1404
1405
1406 /**
1407  * @desc 获取querystring
1408  * @param $url
1409  * @return array|string
1410  */
1411 function convertUrlQuery($url) {
1412     $arr = parse_url($url);
1413     $query = $arr[‘query‘];
1414     if (!empty($query)) {
1415         $queryParts = explode(‘&‘, $query);
1416
1417         $params = array();
1418         foreach ($queryParts as $param) {
1419             $item = explode(‘=‘, $param);
1420             $params[$item[0]] = $item[1];
1421         }
1422     } else {
1423         $params = ‘‘;
1424     }
1425     return $params;
1426 }
1427
1428
1429
1430
1431 /**
1432  *计算某个经纬度的周围某段距离的正方形的四个点
1433  *
1434  *@param lng float 经度
1435  *@param lat float 纬度
1436  *@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
1437  *@return array 正方形的四个点的经纬度坐标
1438 */
1439 function returnSquarePoint($lng, $lat,$distance = 0.5){
1440     define(EARTH_RADIUS, 6371);//地球半径,平均半径为6371km
1441     $dlng =  2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));
1442     $dlng = rad2deg($dlng);
1443
1444     $dlat = $distance/EARTH_RADIUS;
1445     $dlat = rad2deg($dlat);
1446
1447     return array(
1448             ‘left-top‘=>array(‘lat‘=>$lat + $dlat,‘lng‘=>$lng-$dlng),
1449             ‘right-top‘=>array(‘lat‘=>$lat + $dlat, ‘lng‘=>$lng + $dlng),
1450             ‘left-bottom‘=>array(‘lat‘=>$lat - $dlat, ‘lng‘=>$lng - $dlng),
1451             ‘right-bottom‘=>array(‘lat‘=>$lat - $dlat, ‘lng‘=>$lng + $dlng)
1452     );
1453 }
1454
1455     function arr2_arr1($arrdata,$v)
1456     {
1457         $arrs = array();
1458         foreach ($arrdata as $key => $value) {
1459             $arrs[] = $value[$v];
1460         }
1461         return $arrs;
1462     }
1463
1464     function dangqiangIp()
1465     {
1466
1467         $ip = "Unknown";
1468
1469         if (isset($_SERVER["HTTP_X_REAL_IP"]) && !empty($_SERVER["HTTP_X_REAL_IP"])) {
1470             $ip = $_SERVER["HTTP_X_REAL_IP"];
1471         }
1472         elseif (isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) && !empty($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) {
1473             $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
1474         }
1475         elseif (isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) && !empty($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) {
1476             $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
1477         }
1478         elseif (isset($HTTP_SERVER_VARS["REMOTE_ADDR"]) && !empty($HTTP_SERVER_VARS["REMOTE_ADDR"])) {
1479             $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
1480         }
1481         elseif (getenv("HTTP_X_FORWARDED_FOR")) {
1482             $ip = getenv("HTTP_X_FORWARDED_FOR");
1483         }
1484         elseif (getenv("HTTP_CLIENT_IP")) {
1485             $ip = getenv("HTTP_CLIENT_IP");
1486         }
1487         elseif (getenv("REMOTE_ADDR")) {
1488             $ip = getenv("REMOTE_ADDR");
1489         }
1490         return $ip;
1491     }
1492 ?>
1493
1494 <!DOCTYPE html>
1495 <html lang="en">
1496 <head>
1497     <meta charset="UTF-8">
1498     <title>Document</title>
1499 </head>
1500 <body>
1501
1502 </body>
1503 </html>
1504 <script type="text/javascript">
1505
1506     $.ajax({
1507                         type:‘get‘,
1508                         url:‘/merchants.php?m=User&c=index&a=delmen&id=‘+ids,
1509                         dataType:"JSON",
1510                         success:function(ret){
1511                             //alert(ret.error);
1512                                 if(ret.error== 2){
1513                                          swal({
1514                                               title: "公众号菜单!",
1515                                               text: ret.msg,
1516                                               type: "success"
1517                                              }, function () {
1518                                             window.location.reload();
1519                                             });
1520
1521                                 }else{
1522                                     swal({
1523                                               title: "公众号菜单!",
1524                                               text: ret.msg,
1525                                               type: "error"
1526                                              }, function () {
1527                                             window.location.reload();
1528                                             });
1529                                 }
1530                         }
1531                     });
1532 //========================
1533     $.get(‘?m=User&c=cashier&a=restore‘,{orderid:c.attr(‘data-id‘)},function(re){
1534                             if(re.status == 0){
1535                                 swal("错误", "还原失败 :)", "error");
1536                             }else{
1537                                 swal("成功", "还原成功 :)", "success");
1538                                 c.parents(‘tr‘).remove();
1539                                 b(‘.footable‘).footable();
1540                             }
1541                         },‘json‘);
1542                     });
1543
1544  //=================================
1545 </script>
1546
1547 <script>
1548     $(function(){
1549       $(‘#submit‘).click(function() {
1550           var postData={
1551             geetest_challenge: $(‘.geetest_challenge‘).val(),
1552             geetest_validate: $(‘.geetest_validate‘).val(),
1553             geetest_seccode: $(‘.geetest_seccode‘).val()
1554         }
1555         postData.username = $("input[name=‘username‘]").val();
1556         postData.password = $("input[name=‘password‘]").val();
1557         postData.type = $("input[name=‘type‘]:checked").val();
1558
1559       console.log(postData);//success
1560       $.post(‘merchants.php?m=Index&c=index&a=signin_test‘, postData, function(ret){
1561           console.log(ret.msg);
1562             if (ret.error == 0){
1563                window.location.href=ret.msg;
1564                 //window.location.href="/merchants.php?m=User&c=souye&a=souye";
1565                //swal("成功", ret.msg, "success");
1566              }else if(ret.error == 1){
1567                swal("失败", ret.msg, "error");
1568            }else{
1569                window.location.href=ret.msg;
1570            }
1571         },‘json‘);
1572
1573       });
1574     });
1575   </script>

时间: 2024-10-06 23:47:26

php常用的函数的相关文章

sql常用格式化函数及字符串函数

一.常用格式化函数 1.日期转字符串 select to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') //2017-09-18 22:41:50 YYYY:年(4和更多位) MM:月份号(01-12) DD:一个月里的日(01-31) HH24:一天的小时数(00-23) MI:分钟(00-59) SS:秒(00-59) 2.字符串转日期 select to_date('2017-09-18','YYYY-MM-DD') //2017-09-

在PHP编程中常用的函数

<?php//===============================时间日期===============================//y返回年最后两位,Y年四位数,m月份数字,M月份英文.d月份几号数字,D星期几英文$date=date("Y-m-d");$date=date("Y-m-d H:i:s");//带时分秒 //include,include_once.require,require_once//require("file

嵌入式之---常用模板函数(用法说明函数、参数解析函数)

主要内容:嵌入式常用模板函数(用法说明函数.参数解析函数) /*显示参数列表*/ void usage() {     printf("usage: server [-p:x] [-i:IP] [-o]\n\n");     printf("       -p:x      Port number to listen on\n");     printf("       -i:str    Interface to listen on\n");

SP常用的函数

ASP常用的函数,希望能用的着. <% dim db db="dbms.mdb" '****************************************************************** '执行sql语句,不返回值,sql语句最好是如下: 'update 表名 set 字段名=value,字段名=value where 字段名=value 'delete from 表名 where 字段名=value 'insert into 表名 (字段名,字段名

MySQL常用字符函数简介

<html> <body> <h1>MySQL常用字符函数简介</h1> <table>     <tr>         <td>CONCAT(S1,S2...Sn)</td>         <td>连接S1,S2...Sn为一个字符串</td>     </tr> </table> <p style="background-color:yel

Oracl常用e函数整理

最近学Oracle数据库,常常遇到Oracle数据库函数问题,经过默默地琢磨处理,总结了一些Oracle数据库常用函数. ------------------------------------ ---->oracle常用基本函数(附例子)<---- ------------------------------------ ------------------------ ---->常用的字符函数<---- ------------------------ --initap()单词

linux常用C函数目录

字符测试篇 isalnum isalpha isascii iscntrl isdigit isgraphis islower isprint isspace ispunct isupper isxdigit 字符串转换篇 atof atoi atol gcvt strtod strtol strtoul toascii tolower toupper 内存控制篇 calloc free getpagesize malloc mmap munmap 日期时间篇 asctime ctime get

常用hash函数对比分析(一)

主要目标:寻找一个hash函数,高效的支持64位整数运算,使得在速度.空间等效率相对其它函数函数较高,以及内部运算时32位整数运算. 测试了"RSHash","JSHash","PJWHash","ELFHash","BKDRHash","SDBMHash","DJBHash","DEKHash","BPHash","

Oracle 常用系统函数

2  字符函数 1.    replace( 字符串1,字符串2,字符串3) replace( char, search_string, replace_string) 功能:在"字符串1"中搜索"字符串2",并将其替换为"字符串3". 例如下面的命令是将所有员工名字中出现的"A"替换为"中国". SQL>selectreplace(ename, 'A', '中国') from scott.emp;

C# 常用日期函数

我想知道取的时期是几月.几日,然后做一些统计,上网找了一些方法. --DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.DateTime.Now; 1.2 取当前年 int 年=currentTime.Year; 1.3 取当前月 int 月=currentTime.Month; 1.4 取当前日 int 日=currentTime.Day; 1.5 取