PHP常用函数
后端笔记 2016-07-04 15:05:19 笔记   

1、帝国中对需要写入数据库的函数处理

2、打开错误提示

3、获取URL或对已有的文件路径获取目录名及后缀名 

4、PHP替换字符串 

5、丢弃索引 / 丢弃数组现有的索引,从0开始 

6、计算数组的交集 / 判断一个数组中是否包含另一个数组  /  追加数组 / 添加元素到数组的第一位 

7、php object对象 

8、检测数据类型 (数字,字母,数字+字母,数字+字母+下划线,数字+字母+下划线+点)

9、获取开始日期与结束日期之间的所有日期 

10、获取两个时间之前的时间差,几小时,几分钟

11、根据时间获取上午还是下午,几点

12、统计运行时间( 运行时间及内存使用)

13、一个数字平均分成N等份

14、广联达sign签名生成方法示例一

15、验证卡号输入是否正确

 

根据时间获取上午还是下午,几点

PHP Code复制内容到剪贴板
  1. $in = "2019-1-10 14:23:00";  
  2.                 if($in){  
  3.                     $in = strtotime($in);  
  4.                     $newIn = "";  
  5.                     if (date("H"$in) <= 12) {  
  6.                         $newIn .= "上午:";  
  7.                     } else {  
  8.                         $newIn .= "下午:";  
  9.                     }  
  10.                     $newIn .= date("h:i"$in);  
  11.                     $in = $newIn;  
  12.                 }  
  13. echo $in;  

 

 

 

获取两个时间之前的时间差,几小时,几分钟

PHP Code复制内容到剪贴板
  1. $out = "2019-1-10 14:00:00"//出场时间  
  2. $in = "2019-1-10 9:00:00"//进场时间  
  3.   
  4. $t = strtotime($out) - strtotime($in);  
  5.             $presenceTime = "";  
  6.             if ($t && $t > 0) {  
  7.   
  8.                 $sec = round($t / 60);  
  9.                 if ($sec >= 60) {  
  10.                     $hour = floor($sec / 60);  
  11. //                    $min = $sec % 60;  
  12.                     $presenceTime = $hour . '小时';  
  13. //                    $min != 0 && $presenceTime .= $min . '分钟';  
  14.                 } else {  
  15.                     $presenceTime = $sec . '分钟';  
  16.                 }  
  17.             }  

 

 

获取开始日期与结束日期之间的所有日期 

PHP Code复制内容到剪贴板
  1. /** 
  2.  * 获取指定日期段内每一天的日期 
  3.  * @param Date $startdate 开始日期 
  4.  * @param Date $enddate  结束日期 
  5.  * @return Array 
  6.  */  
  7. function getDateFromRange($startdate$enddate){  
  8.   $stimestamp = strtotime($startdate);  
  9.   $etimestamp = strtotime($enddate);  
  10.   // 计算日期段内有多少天  
  11.   $days = ($etimestamp-$stimestamp)/86400+1;  
  12.   // 保存每天日期  
  13.   $date = array();  
  14.   for($i=0; $i<$days$i++){  
  15.     $date[] = date('Y-m-d'$stimestamp+(86400*$i));  
  16.   }  
  17.   return $date;  
  18. }  
  19. $startdate = '2016-08-29';  
  20. $enddate = '2016-09-29';  
  21. // demo  
  22. $date = getDateFromRange($startdate,$enddate);  
  23. print_r($date);  

 

 

PHP发送POST请求curl方法

PHP Code复制内容到剪贴板
  1. public function get($url$params=array()) {  
  2.     $real_url = $url;  
  3.     if (!emptyempty($params) && is_array($params)) {  
  4.         $query = http_build_query($params);  
  5.         $real_url = $url ."?"$query;  
  6.     }else{  
  7.     }  
  8.     $process = curl_init($real_url);  
  9.     curl_setopt($process, CURLOPT_HTTPHEADER, array('Accept: application/json','Content-Type: application/json'));  
  10.     curl_setopt($process, CURLOPT_HEADER, 0);  
  11.     curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);//TODO Curl证书处理  
  12.     curl_setopt($process, CURLOPT_TIMEOUT, 30);  
  13.     curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);  
  14.     curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);  
  15.     return json_decode(curl_exec($process));  
  16. }  

 

PHP Code复制内容到剪贴板
  1. protected function post($url$params = ''$header = array(), $timeout = 5)  
  2. {  
  3.     //curl  
  4.     $ch = curl_init();  
  5.     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');  
  6.     curl_setopt($ch, CURLOPT_POST, true);  
  7.     curl_setopt($ch, CURLOPT_POSTFIELDS, $params);  
  8.     curl_setopt($ch, CURLOPT_URL, $url);  
  9.     curl_setopt($ch, CURLOPT_HEADER, 0);  
  10.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
  11.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);  
  12.     $header = array_merge($header, ['Accept: application/json''Content-Type: application/json']);  
  13.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  
  14.     $restRe = curl_exec($ch);  
  15.     $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
  16.     curl_close($ch);  
  17.     return $restRe;  
  18. }  

 

 

PHP Code复制内容到剪贴板
  1. function post($url$params = ''$timeout = 5){//curl   
  2.     $ch = curl_init();   
  3.     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');   
  4.     curl_setopt($ch,CURLOPT_POST,true);   
  5.     curl_setopt($ch,CURLOPT_POSTFIELDS,$params);   
  6.     curl_setopt($ch, CURLOPT_URL, $url);   
  7.     curl_setopt($ch, CURLOPT_HEADER, 0);   
  8.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   
  9.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);   
  10.     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json','Content-Type: application/json'));   
  11.     $restRe = curl_exec($ch);   
  12.     $status = curl_getinfo($ch,CURLINFO_HTTP_CODE);   
  13.     curl_close($ch);   
  14.     return $restRe;   
  15. }   
  16.   
  17.   
  18.   
  19. function getHttpResponsePOST($url$params ) {   
  20.     $ch = curl_init ();  
  21.     // print_r($ch);  
  22.     curl_setopt ( $ch, CURLOPT_URL, $url );  
  23.     curl_setopt ( $ch, CURLOPT_POST, 1 );  
  24.     curl_setopt ( $ch, CURLOPT_HEADER, 0 );  
  25.     curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );  
  26.     curl_setopt ( $ch, CURLOPT_POSTFIELDS, $params );  
  27.     $return = curl_exec ( $ch );  
  28.     curl_close ( $ch );  
  29.     return $return;   
  30. }  

 

CURL 详解

PHP Code复制内容到剪贴板
  1. <php  
  2. $cookie_file=dirname(__FILE__)."/cookie_".md5(basename(__FILE__)).".txt";//设置Cookie文件保存路径及文件名  
  3. functionvlogin($url,$data){//模拟登录获取Cookie函数$curl=curl_init();//启动一个CURL会话  
  4. curl_setopt($curl,CURLOPT_URL,$url);//要访问的地址  
  5. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//对认证证书来源的检查  
  6. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1);//从证书中检查SSL加密算法是否存在  
  7. curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模拟用户使用的浏览器  
  8. curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);//使用自动跳转  
  9. curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自动设置Referer  
  10. curl_setopt($curl,CURLOPT_POST,1);//发送一个常规的Post请求  
  11. curl_setopt($curl,CURLOPT_POSTFIELDS,$data);//Post提交的数据包  
  12. curl_setopt($curl,CURLOPT_COOKIEJAR,$GLOBALS['cookie_file']);//存放Cookie信息的文件名称  
  13. curl_setopt($curl,CURLOPT_COOKIEFILE,$GLOBALS['cookie_file']);//读取上面所储存的Cookie信息  
  14. curl_setopt($curl,CURLOPT_TIMEOUT,30);//设置超时限制防止死循环  
  15. curl_setopt($curl,CURLOPT_HEADER,0);//显示返回的Header区域内容  
  16. curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//获取的信息以文件流的形式返回  
  17. $tmpInfo=curl_exec($curl);//执行操作if(curl_errno($curl)){  
  18. echo'Errno'.curl_error($curl);}  
  19. curl_close($curl);//关闭CURL会话return$tmpInfo;//返回数据}  
  20. functionvget($url){//模拟获取内容函数  
  21. $curl=curl_init();//启动一个CURL会话  
  22.   
  23.   
  24.   
  25.   
  26.   
  27.   
  28. curl_setopt($curl,CURLOPT_URL,$url);//要访问的地址  
  29. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//对认证证书来源的检查  
  30. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1);//从证书中检查SSL加密算法是否存在  
  31. curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模拟用户使用的浏览器  
  32. curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);//使用自动跳转  
  33. curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自动设置Referer  
  34. curl_setopt($curl,CURLOPT_HTTPGET,1);//发送一个常规的Post请求  
  35. curl_setopt($curl,CURLOPT_COOKIEFILE,$GLOBALS['cookie_file']);//读取上面所储存的Cookie信息  
  36. curl_setopt($curl,CURLOPT_TIMEOUT,30);//设置超时限制防止死循环  
  37. curl_setopt($curl,CURLOPT_HEADER,0);//显示返回的Header区域内容  
  38. curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//获取的信息以文件流的形式返回  
  39. $tmpInfo=curl_exec($curl);//执行操作if(curl_errno($curl)){  
  40. echo'Errno'.curl_error($curl);}  
  41. curl_close($curl);//关闭CURL会话return$tmpInfo;//返回数据}  
  42. functionvpost($url,$data){//模拟提交数据函数$curl=curl_init();//启动一个CURL会话  
  43. curl_setopt($curl,CURLOPT_URL,$url);//要访问的地址  
  44. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);//对认证证书来源的检查  
  45. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1);//从证书中检查SSL加密算法是否存在  
  46. curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模拟用户使用的浏览器  
  47. curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);//使用自动跳转  
  48. curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自动设置Referer  
  49.   
  50.   
  51.   
  52.   
  53.   
  54.   
  55. curl_setopt($curl,CURLOPT_POST,1);//发送一个常规的Post请求  
  56. curl_setopt($curl,CURLOPT_POSTFIELDS,$data);//Post提交的数据包  
  57. curl_setopt($curl,CURLOPT_COOKIEFILE,$GLOBALS['cookie_file']);//读取上面所储存的Cookie信息  
  58. curl_setopt($curl,CURLOPT_TIMEOUT,30);//设置超时限制防止死循环  
  59. curl_setopt($curl,CURLOPT_HEADER,0);//显示返回的Header区域内容  
  60. curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//获取的信息以文件流的形式返回  
  61. $tmpInfo=curl_exec($curl);//执行操作if(curl_errno($curl)){  
  62. echo'Errno'.curl_error($curl);}  
  63. curl_close($curl);//关键CURL会话return$tmpInfo;//返回数据}  
  64. functiondelcookie($cookie_file){//删除Cookie函数@unlink($cookie_file);//执行删除}  
  65. //使用实例  
  66. if(!file_exists($cookie_file)){//检测Cookie是否存在  
  67. $str=vget('http://www.kalvin.cn/action=login');//获取登录随机值  
  68. preg_match("/name=\"formhash\"value=\"(.*)\"/is",$str,$hash);//提取登录随机值  
  69. vlogin('http://www.kalvin.cn/post.php','action=dologin&formhash='.$hash[1].'&username=aaa&password=bbb&clientcode=ccc');//登录获取Cookie}  
  70. echovget('http://www.kalvin.cn/');>  

 

 

 


 

json与数组的相互转化形式 / 转为json / 数组转为json / json转为数组 / 数组转json / json转数组

PHP Code复制内容到剪贴板
  1. $json_arr = array('WebName'=>'yoyo个人笔记','WebSite'=>'http://www.yoyo88.cn');   
  2. $php_json = json_encode($json_arr);  //把php数组格式转换成 json 格式的数据  
  3. echo $php_json;   
  4.   
  5. $php_json = json_decode($php_json);   //再把json格式的数据转换成php数组  
  6. print_r($php_json);  

将json转为数组会出现 stdclass object

29c179c7-72c9-451a-834d-64d69989a530.png

在转换的时候,多加一个true 则正常
 

PHP Code复制内容到剪贴板
  1. print_r(json_decode($php_json,true));  

 

PHP用Json_encode转换数组中文乱码 

PHP Code复制内容到剪贴板
  1. <?php  
  2. $id = $_GET['id'];//get接受传值  
  3. api($id);//执行函数  
  4. //定义函数  
  5. function api($id){  
  6. //函数体  
  7. $arrayarray(1,2,3);//这是只是示意,表示$array是数组  
  8. $json=jsons_encode($array);//通过jsons_encode函数输出数组的json格式  
  9. echo $json;  
  10. }  
  11. ?>  

 

通过jsons_encode函数把数组转换成json格式时,会发现形如这样的中文乱码:

\u901a\u8baf\u5f55\uff0c\u662f\u738b\u67cf\u5143\u81ea\u4e3b\u5f00\

 

原因分析:

在存储到数据库时!MySQL 不会存储 unicode 字符:MySQL 仅支持从基本的多语种平面字符 (0×0000-0xFFFF)。请尝试存储一个同义词相反:)

更新: MySQL 5.5.3 上 (其中尚未 GA), 支持补充字符如果您使用 UTF8MB4 编码。

json_encode中文的时候,会把每个中文字符encode成“uxxxx”,而存进数据库的时候,“”被屏蔽了,直接变成”uxxxx”

 

解决方案一:PHP版本>5.4

PHP Code复制内容到剪贴板
  1. $json = json_encode($array,JSON_UNESCAPED_UNICODE);  

 

解决方案二:

PHP Code复制内容到剪贴板
  1. <?php  
  2. function jsons_encode($array){  
  3. //遍历已有数组,将每个值 urlencode 一下  
  4. foreach($array as $key=>$value){  
  5. $array[$key]=urlencode($value);  
  6.  }  
  7. //用urldecode将值反解  
  8.  return urldecode(json_encode($array));  
  9. }  
  10. /**注意:中间省略了数组获取的代码, 
  11. 你可以使用上面的jsons_encode函数对你的数组进行转换 
  12. */  
  13.    
  14. $json=jsons_encode($array);  
  15. echo $json;  
  16. ?>  

 

json_encode 去掉键值:

PHP Code复制内容到剪贴板
  1. $a = array(  
  2.   0 => array('name' => 1),  
  3.   5 => array('name' => 2),  
  4.   6 => array('name' => 3),  
  5. );  
  6. echo json_encode($a); //{"0":{"name":1},"5":{"name":2},"6":{"name":3}}  
  7. echo json_encode(array_values($a)); //[{"name":1},{"name":2},{"name":3}]  

 

 

丢弃索引 / 丢弃数组现有的索引,从0开始

PHP Code复制内容到剪贴板
  1. array_values($array)  

 

 

计算数组的交集 / 判断一个数组中是否包含另一个数组 / 追加数组 / 添加元素到数组的第一位

1、输出交集的数组

PHP Code复制内容到剪贴板
  1. <?php  
  2.     $array1 = array("a" => "green""red""blue");  
  3.     $array2 = array("b" => "green""yellow""red");  
  4.     $result = array_intersect($array1$array2);  
  5.     print_r($result);  
  6. ?>  
  7.   
  8. // 输出结果:  
  9. Array  
  10. (  
  11.     [a] => green  
  12.     [0] => red  
  13. )  

 

输出交集部分

 

2、(PHP 4 >= 4.0.1, PHP 5, PHP 7)

array_diff — 计算数组的差集

PHP Code复制内容到剪贴板
  1. <?php  
  2. $array1 = array("a" => "green""red""blue""red");  
  3. $array2 = array("b" => "green""yellow""red");  
  4. $result = array_diff($array1$array2);  
  5.   
  6. print_r($result);  
  7. ?>  
  8.   
  9. // 输出:  
  10. Array  
  11. (  
  12.     [1] => blue  
  13. )  

 

array_push追加数组,到数组的尾部:

PHP Code复制内容到剪贴板
  1. $array_push = array("西瓜","苹果");//定义数组  
  2. array_push($array_push,"香蕉","梨子");//添加元素  
  3. print_r($array_push);// 输出数组结果  
  4.   
  5. //[  
  6. //  "西瓜",  
  7. //  "苹果",  
  8. //  "香蕉",  
  9. //  "梨子"  
  10. //]  

 

array_unshift头部添加元素

PHP Code复制内容到剪贴板
  1. $names = ['andy''tom''jack'];  
  2. array_unshift($names'joe''hank');  
  3. print_r($names);  
  4.   
  5. //[  
  6. //  "joe",  
  7. //  "hank",  
  8. //  "andy",  
  9. //  "tom",  
  10. //  "jack"  
  11. //]  

 

 

 

php object对象

PHP Code复制内容到剪贴板
  1. In PHP 7 there are a few ways to create an emptyempty object:  
  2.   
  3. <?php  
  4. $obj1 = new \stdClass; // Instantiate stdClass object  
  5. $obj2 = new class{}; // Instantiate anonymous class  
  6. $obj3 = (object)[]; // Cast empty array to object  
  7.   
  8. var_dump($obj1); // object(stdClass)#1 (0) {}  
  9. var_dump($obj2); // object(class@anonymous)#2 (0) {}  
  10. var_dump($obj3); // object(stdClass)#3 (0) {}  
  11. ?>  
  12.   
  13. $obj1 and $obj3 are the same type, but $obj1 !== $obj3. Also, all three will json_encode() to a simple JS object {}:  
  14.   
  15. <?php  
  16. echo json_encode([  
  17.     new \stdClass,  
  18.     new class{},  
  19.     (object)[],  
  20. ]);  
  21. ?>  
  22.   
  23. Outputs: [{},{},{}]  

 

参考:http://www.php.net/manual/zh/language.types.object.php

 


 

 

 


 

合并数组

array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为: 

 

PHP Code复制内容到剪贴板
  1. array array_merge (array array1 array2…,arrayN)  

将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

 

示例:

PHP Code复制内容到剪贴板
  1. $face = array("J","Q","K","A");  
  2. $numbered = array("2","3","4","5","6","7","8","9");  
  3. $cards = array_merge($face$numbered);  
  4. shuffle($cards);  
  5. print_r($cards);  

 

返回: 

PHP Code复制内容到剪贴板
  1. Array ( [0] => A [1] => 4 [2] => 9 [3] => 3 [4] => K [5] => 7 [6] => 5 [7] => Q [8] => 6 [9] => 8 [10] => 2 [11] => J )  

 

递归追加数组

array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间 的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为 当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一 个数组合并的形式,就是递归追加数组。其形式为:

PHP Code复制内容到剪贴板
  1. array array_merge_recursivearray key,array values )  

 

示例:

PHP Code复制内容到剪贴板
  1. $class1 = array("John" => 100, "James" => 85);  
  2. $class2 = array("Micky" => 78, "John" => 45);  
  3. $classScores = array_merge_recursive($class1$class2);  
  4. print_r($classScores);  

返回:

PHP Code复制内容到剪贴板
  1. Array ( [John] => Array ( [0] => 100 [1] => 45 ) [James] => 85 [Micky] => 78 )  

 

连接两个数组

array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:

PHP Code复制内容到剪贴板
  1. array array_combine(array array1,array array2[…,array arrayN])  

示例:

PHP Code复制内容到剪贴板
  1. $abbreviations = array("AL","AK","AZ","AR");  
  2. $states = array("Alabama","Alaska","Arizona","Arkansas");  
  3. $stateMap = array_combine($abbreviations,$states);  
  4. print_r($stateMap);  

返回:

PHP Code复制内容到剪贴板
  1. Array ( [AL] => Alabama [AK] => Alaska [AZ] => Arizona [AR] => Arkansas )  

 

重组数组

两组数组:

1.jpg

将两组数组拆分,合并为一个数组,对于orderid有的是以逗号分割了,其实有两组order,对应的也有两组purchaseYns,purchaseYnNeeds,purchaseNums 等

PHP Code复制内容到剪贴板
  1. $orderId = explode(',',$item['orderIds']);  
  2. $purchaseYn = explode(',',$item['purchaseYns']);  
  3. $purchaseNum = explode(',',$item['purchaseNums']);  
  4. $purchaseYnNeed = explode(',',$item['purchaseYnNeeds']);  
  5. $n = count($orderId);  
  6. $newAry = [];  
  7. for($i=0;$i<=$n-1;$i++)  
  8. {  
  9.     $newAry[] = [  
  10.         'orderId'           =>  $orderId[$i],  
  11.         'purchaseYn'        =>  $purchaseYn[$i],  
  12.         'purchaseNum'       =>  $purchaseNum[$i],  
  13.         'purchaseYnNeed'    =>  $purchaseYnNeed[$i]  
  14.     ];  
  15. }  

最终输出的效果为:

2.jpg

 

 

 


 

1.png

默认情况下,是没有错误提示的,最多一片空白:

 

打开错误日志 错误提示

PHP Code复制内容到剪贴板
  1. error_reporting(E_ALL);  
  2. ini_set('display_errors''1');  
  3.     
  4. //将出错信息输出到一个文本文件  
  5. ini_set('error_log', dirname(__FILE__) . '/error_log.txt');  

 

PHP Code复制内容到剪贴板
  1. echo ini_get('error_reporting');  

 

PHP Code复制内容到剪贴板
  1. /** 
  2.  * 将异常输出到日志里面 
  3.  * Note: port from CApplication::handleException() 
  4.  * 
  5.  * @param Exception $exception 需要写入日志的异常 
  6.  */  
  7. public static function logException($exception) {  
  8.     // disable error capturing to avoid recursive errors  
  9.     restore_error_handler();  
  10.     restore_exception_handler();  
  11.   
  12.     $category = 'exception.' . get_class($exception);  
  13.     // php <5.2 doesn't support string conversion auto-magically  
  14.     $message = $exception->__toString();  
  15.     if (isset($_SERVER['REQUEST_URI'])) { 
  16.         $message .= "\nREQUEST_URI=" . $_SERVER['REQUEST_URI']; 
  17.     } 
  18.     if (isset($_SERVER['HTTP_REFERER'])) { 
  19.         $message .= "\nHTTP_REFERER=" . $_SERVER['HTTP_REFERER'];  
  20.     }  
  21.     $message .= "\n---";  
  22.     Yii::log($message, CLogger::LEVEL_ERROR, $category);  
  23. }  

 

PHPIN 设置错误级别为严格:

PHP Code复制内容到剪贴板
  1. display_errors = On   
  2. error_reporting = E_ALL  

 


 

API中,筛选条件往往传递成数组,将数组拆解,并拼成筛选条件

PHP Code复制内容到剪贴板
  1. //过滤筛选条件  
  2. $filter = array(  
  3.     'id'       => $orderId,  
  4.     'user_id'  => $orderType,  
  5.     'uid'      => $userId  
  6. );  
  7. //排除条件为空时  
  8. foreach ($filter as $k => $v) {  
  9.     if (emptyempty($v)) {  
  10.         unset($filter[$k]);  
  11.     }  
  12. }  
  13. $s = ' where del_flag=0';  
  14. foreach ($filter as $k=>$v){  
  15.     if (is_string($v)) {  
  16.         $v = addslashes($v);  
  17.     }  
  18.     $s .= " and `$k`='$v'";  
  19. }  
  20. return $s;  
  21.   
  22.   
  23.   
  24.   
  25.   
  26.   
  27. $filter = $_POST;  
  28. //7.2排除hash  
  29. foreach ($filter as $k => $v) {  
  30.     $exp='/(ehash_|rhash_)/';  
  31.     if(preg_match($exp,$k)) {  
  32.        unset($filter[$k]);  
  33.     }  
  34. }  
  35. foreach ($filter as $k=>$v){  
  36.     if(is_string($v)) {  
  37.         $v = addslashes($v);  
  38.     }  
  39.     if (emptyempty($s)) {  
  40.         $s = "`$k`='$v'";  
  41.     } else {  
  42.         $s .= ",`$k`='$v'";  
  43.     }  
  44. }  
  45. $r = $empire->query("update {$dbtbpre}comments_widget_config set ".$s." where `id`=$_POST[id]");  

 

 

 

 


 

PHP获取当前所在物理路径 绝对路径

 

PHP Code复制内容到剪贴板
  1. define('ECMS_PATH',substr(dirname(__FILE__),0,-7));  

 

 

获取当前文件所在的文件夹+文件名:

PHP Code复制内容到剪贴板
  1. echo __FILE__;   
  2. //C:\work\ceshi\trunk\api\open\alipayRefund\alipay.config.php  

 

 获取当前文件名:

PHP Code复制内容到剪贴板
  1. echo basename(__FILE__);  
  2. //如:alipay.config.php  

 

获取不含后缀名的文档名称: 

PHP Code复制内容到剪贴板
  1. echo basename(__FILE__'.php');  
  2. //如:alipay.config  

 

获取当前文档所在的目录绝对路径,不含文件名:

PHP Code复制内容到剪贴板
  1. echo dirname(__FILE__);  
  2. //如:C:\work\ceshi\trunk\api\open\alipayRefund  

 

获取当前文档所在的上一层目录的绝对路径:

PHP Code复制内容到剪贴板
  1. echo dirname(dirname(__FILE__));  
  2. //如:C:\work\ceshi\trunk\api\open\alipayRefund  

 

PHP获取当前所有页面的url:

PHP Code复制内容到剪贴板
  1. #测试网址:     http://localhost/blog/testurl.php?id=5  
  2.  
  3. //获取域名或主机地址   
  4. echo $_SERVER['HTTP_HOST']."<br>"; #localhost  
  5.  
  6. //获取网页地址   
  7. echo $_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php  
  8.  
  9. //获取网址参数   
  10. echo $_SERVER["QUERY_STRING"]."<br>"; #id=5  
  11.  
  12. //获取用户代理   
  13. echo $_SERVER['HTTP_REFERER']."<br>";   
  14.  
  15. //获取完整的url  
  16. echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];  
  17. echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];  
  18. #http://localhost/blog/testurl.php?id=5  
  19.  
  20. //包含端口号的完整url  
  21. echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];   
  22. #http://localhost:80/blog/testurl.php?id=5  
  23.  
  24. //只取路径  
  25. $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];   
  26. echo dirname($url);  
  27. #http://localhost/blog  

 

 

PHP Code复制内容到剪贴板
  1. $file = "c:/webroot/index.php";  
  2. $fileWebAddress = 'http://'.str_replace($_SERVER['DOCUMENT_ROOT'],$_SERVER['HTTP_HOST'],$file);  

 

PHP Code复制内容到剪贴板
  1. <?php  
  2. $path = "/usr/www/html/index.php";  
  3. $pathinfo = pathinfo($path);  
  4. echo "目录名称:$pathinfo[dirname]<br>";  
  5. echo "文件名称:$pathinfo[basename]<br>";  
  6. echo "扩展名:$pathinfo[extension]";  
  7. ?>  

 

 


 

使用php获取时间今天明天昨天时间戳 

PHP Code复制内容到剪贴板
  1. 2013-06-20 11:12  
  2. <?php  
  3. echo "今天:".date("Y-m-d")."<br>";      
  4. echo "昨天:".date("Y-m-d",strtotime("-1 day")), "<br>";      
  5. echo "明天:".date("Y-m-d",strtotime("+1 day")). "<br>";   
  6. echo "一周后:".date("Y-m-d",strtotime("+1 week")). "<br>";      
  7. echo "一周零两天四小时两秒后:".date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")). "<br>";      
  8. echo "下个星期四:".date("Y-m-d",strtotime("next Thursday")). "<br>";      
  9. echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."<br>";      
  10. echo "一个月前:".date("Y-m-d",strtotime("last month"))."<br>";      
  11. echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."<br>";      
  12. echo "十年后:".date("Y-m-d",strtotime("+10 year"))."<br>";      
  13. strtotime()函数的作用是将日期时间描述解析为 Unix 时间戳  
  14. int strtotime  ( string time [, int now] )  
  15.    
  16.    
  17. $date3=date('Y-m-d H:i:s',"1228348800");  
  18.    
  19. ?>  

 

时间戳转化,上月,本月,下月,下下月

PHP Code复制内容到剪贴板
  1. /* 
  2. $type: 需要获取的时间戳类型:M为月 W为周 D为天。 
  3. $value: 需要的值。+ 或者 - 数值。 
  4. $time:返回为包含开始时间和结束时间的数组。 
  5. */  
  6. function ReturnUtime($type='',$value=''){  
  7.     $type=strtoupper($type);  
  8.     switch ($type) {  
  9.         case 'M':  
  10.             $t = strtotime((date('Y-m',time()) . '-01 00:00:01')); // 20151031修复strtotime按30天计算的BUG  
  11.             $time[] = strtotime(date("Y-m-01 00:00:00"strtotime("{$value} month",$t)));//月开始时间  
  12.             $time[] = strtotime(date("Y-m-t 23:59:59"strtotime("{$value} month",$t)));//月结束时间  
  13.             break;  
  14.         case 'W':  
  15.             $time[] = mktime(0,0,0,date('m'),date('d')-date('w')+1+($value),date('Y'));//周开始时间  
  16.             $time[] = mktime(23,59,59,date('m'),date('d')-date('w')+7+($value),date('Y'));//周结束时间  
  17.             break;  
  18.         case 'D':  
  19.             $time[] = mktime(0,0,0,date('m'),date('d')+($value),date('Y'));//天开始时间  
  20.             $time[] = mktime(23,59,59,date('m'),date('d')+($value),date('Y'));//天结束时间  
  21.             break;  
  22.         default:  
  23.             $time[] = mktime(0,0,0,date('m'),date('d'),date('Y'));//默认为当天  
  24.             $time[] = mktime(23,59,59,date('m'),date('d'),date('Y'));//默认为当天  
  25.             break;  
  26.     }  
  27.     return $time;  
  28. }  
  29. $aa=ReturnUtime('M','-0');  
  30. echo date("Y-m-d H:i:s",$aa[0]);//开始时间  
  31. echo '<br />';  
  32. echo date("Y-m-d H:i:s",$aa[1]);//结束时间  
  33. /* 
  34. $aa=ReturnUtime('w','+7'); 
  35. echo date("Y-m-d H:i:s",$aa[0]);//开始时间 
  36. echo '<br />'; 
  37. echo date("Y-m-d H:i:s",$aa[1]);//结束时间 
  38. $aa=ReturnUtime('D','-1'); 
  39. echo date("Y-m-d H:i:s",$aa[0]);//开始时间 
  40. echo '<br />'; 
  41. echo date("Y-m-d H:i:s",$aa[1]);//结束时间 
  42. */  

调用示例:

PHP Code复制内容到剪贴板
  1. //部分例子:  
  2. echo date("Y-m-d H:i:s",ReturnUtime('M','-1')[0]).'<br>';//上个月第一天  
  3. echo date("Y-m-d H:i:s",ReturnUtime('M','-1')[1]).'<br>';//上个月最后一天  
  4. echo date("Y-m-d H:i:s",ReturnUtime('W','-7')[0]).'<br>';//上周第一天  
  5. echo date("Y-m-d H:i:s",ReturnUtime('W','-7')[1]).'<br>';//上周最后一天  
  6. echo date("Y-m-d H:i:s",ReturnUtime('D','-1')[0]).'<br>';//昨天开始时间  
  7. echo date("Y-m-d H:i:s",ReturnUtime('D','-1')[1]).'<br>';//昨天结束时间  

 

php 根据开始日期和结束日期得到之间所有日期集合

PHP Code复制内容到剪贴板
  1. /** 
  2.  * 获取指定日期段内每一天的日期 
  3.  * @param  Date  $startdate 开始日期 
  4.  * @param  Date  $enddate   结束日期 
  5.  * @return Array 
  6.  */  
  7. function getDateFromRange($startdate$enddate){  
  8.   
  9.     $stimestamp = strtotime($startdate);  
  10.     $etimestamp = strtotime($enddate);  
  11.   
  12.     // 计算日期段内有多少天  
  13.     $days = ($etimestamp-$stimestamp)/86400+1;  
  14.   
  15.     // 保存每天日期  
  16.     $date = array();  
  17.   
  18.     for($i=0; $i<$days$i++){  
  19.         $date[] = date('Y-m-d'$stimestamp+(86400*$i));  
  20.     }  
  21.   
  22.     return $date;  
  23. }  

 

 

 

 php取得几天星期几以及这个星期的星期一和下周一对应的日期 

PHP Code复制内容到剪贴板
  1. $today=date("Y-m-d");  
  2. echo $today//即可获取今天是几号。输出2014-9-29  
  3. $rows=array("日","一","二","三","四","五","六");//先定义一个数组  
  4. echo "今天是星期 ".$rows[date("w")]." ";  
  5. <?php  
  6.     echo "<li>今天是星期".$rows[date("w")]."</li>";  
  7.     echo "<li>本周一是".date('Y-m-d H:i:s',strtotime("this Monday"))."</li>";  
  8.     echo "<li>本周二是".date('Y-m-d H:i:s',strtotime("this Tuesday"))."</li>";  
  9.     echo "<li>本周三是".date('Y-m-d',strtotime("this Wednesday"))."</li>";  
  10.     echo "<li>本周四是".date('Y-m-d',strtotime("this Thursday"))."</li>";  
  11.     echo "<li>本周五是".date('Y-m-d',strtotime("this Friday"))."</li>";  
  12.     echo "<li>本周六是".date('Y-m-d',strtotime("this Saturday"))."</li>";  
  13. ?>  
  14. echo "本周一是".date('Y-m-d',strtotime("next Monday"))."";//快速获取下周一对应的日期输出2014-10-6  
  15. PS:strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。  
  16. 附上星期对应的英文:   
  17. 周一 Monday  
  18. 周二 Tuesday  
  19. 周三 Wednesday  
  20. 周四 Thursday  
  21. 周五 Friday  
  22. 周六 Saturday  
  23. 周日 Sunday  

 

d12b2854-25f1-4693-a502-5b78fc84bed8.png

PHP Code复制内容到剪贴板
  1. //这里是写一个数组,然后循环显示出来  
  2. <ul>  
  3.     <?php  
  4.     $rows=array("日","一","二","三","四","五","六");  
  5.     foreach($rows as $v){  
  6.         $ads=$v==$rows[date("w")]?' class="on"':'';  
  7.         echo '<li'.$ads.'>'.$v.'</li>';  
  8.     }  
  9.     ?>  
  10. </ul>  
  11. //输出时间在本周日和本周一之间的信息 即输出周日一天的信息  
  12. <?php  
  13. $i=1;  
  14. $sql=$empire->query("select * from {$dbtbpre}ecms_news where classid not in (31) and newstime between ".strtotime('this Sunday')." and ".strtotime('this Monday')." order by onclick desc limit 9");  
  15. while($zr=$empire->fetch($sql)){  
  16. $i++;  
  17. ?>  
  18. <li><span><i class="icon iconfont"></i> <?=$zr['onclick']?></span><a href="<?=$zr['titleurl']?>" target="_blank"><?=$zr['title']?></a></li>  
  19. <?php  
  20. }  
  21. ?>  
  22.   
  23.   
  24. //输出时间在本周一和本周二之间的信息 即输出周一一天的信息  
  25. $sql=$empire->query("select * from {$dbtbpre}ecms_news where classid not in (31) and newstime between ".strtotime('this Monday')." and ".strtotime('this Tuesday')." order by onclick desc limit 9");  

 

12、统计运行时间

PHP Code复制内容到剪贴板
  1. <?php  
  2. $start = microtime(true); // 开始计数  
  3.   
  4.   
  5.   
  6.  //你的代码  
  7.   
  8.   
  9.   
  10.   
  11. $end = microtime(true); // 结束计数  
  12. $time=$end-$start// 得到时间差  
  13. echo number_format($time, 10, '.''')." 秒";//精确到十位小数,可自行调节  
  14. ?>  

 

 

PHP Code复制内容到剪贴板
  1. static function convert($size)  
  2. {  
  3.     $unit = array('b''kb''mb''gb''tb''pb');  
  4.     return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $unit[$i];  
  5. }  
  6.   
  7. static function test()  
  8. {  
  9.   
  10.     set_time_limit(0);   // 设置脚本最大执行时间 为0 永不过期  
  11.   
  12.     $startTime = microtime(true);  
  13.     $start = memory_get_usage();  
  14.     echo self::convert($start) . PHP_EOL;  
  15.   
  16.   
  17.     // do something  
  18.   
  19.   
  20.   
  21.     $endTime = microtime(true);  
  22.     $memoryUse = memory_get_usage();  
  23.   
  24.   
  25.     echo "内存占用:" . self::convert($memoryUse) . "; 用时:" . ($endTime - $startTime) . PHP_EOL;  
  26.     ;  

 

 

 

 

 


需要写入数据库的过滤函数:

PHP Code复制内容到剪贴板
  1. class Test{  
  2.     /** 
  3.      * 字符型处理 —— 写入数据库 
  4.      * @param $val 
  5.      * @param int $ecms 
  6.      * @return string 
  7.      */  
  8.     function RepPostStr($val,$ecms=0){  
  9.         $val = $this->ehtmlspecialchars($val,ENT_QUOTES);  
  10.         if($ecms==0)  
  11.         {  
  12.             $this->CkPostStrChar($val);  
  13.             $val = $this->AddAddsData($val);  
  14.             //FireWall  
  15.             return $this->FWClearGetText($val);  
  16.         }  
  17.         return $val;  
  18.     }  
  19.   
  20.     /** 
  21.      * 检查敏感字符 
  22.      * @param $str 
  23.      * @return string 
  24.      */  
  25.     private function FWClearGetText($str){  
  26.         //关键字保留,根据业务需求  
  27.         $cleargettext = "admin,党";  
  28.         if(emptyempty($cleargettext))  
  29.         {  
  30.             return '';  
  31.         }  
  32.         $r = explode(',',$cleargettext);  
  33.         $count = count($r);  
  34.         for($i=0;$i<$count;$i++)  
  35.         {  
  36.             $str = str_replace($r[$i],"*",$str);    //将指定的敏感关键字替换为*  
  37.         }  
  38.         return $str;  
  39.     }  
  40.   
  41.     /** 
  42.      * 提示 
  43.      * @param $msg 
  44.      */  
  45.     function FWShowMsg($msg){  
  46.         //echo $msg;  
  47.         exit();  
  48.     }  
  49.   
  50.     /** 
  51.      * 增加adds 
  52.      * @param $data 
  53.      * @return string 
  54.      */  
  55.     private function AddAddsData($data){  
  56.         if(!MAGIC_QUOTES_GPC)  
  57.         {  
  58.             $data = addslashes($data); //在每个双引号(")前添加反斜杠  
  59.         }  
  60.         return $data;  
  61.     }  
  62.   
  63.     /** 
  64.      * 处理编码字符 
  65.      * @param $val 
  66.      */  
  67.     private function CkPostStrChar($val){  
  68.         if(substr($val,-1)=="\\") 
  69.         { 
  70.             exit(); 
  71.         } 
  72.     } 
  73.  
  74.     /** 
  75.      * htmlspecialchars处理 
  76.      * @param $val 
  77.      * @param int $flags 
  78.      * @return string 
  79.      */ 
  80.     private function ehtmlspecialchars($val,$flags=ENT_COMPAT){ 
  81.         global $ecms_config; 
  82.         if(PHP_VERSION>='5.4.0') 
  83.         { 
  84.             if($ecms_config['sets']['pagechar']=='utf-8') 
  85.             { 
  86.                 $char='UTF-8'; 
  87.             } 
  88.             else 
  89.             { 
  90.                 $char='ISO-8859-1'; 
  91.             } 
  92.             $val=htmlspecialchars($val,$flags,$char); 
  93.         } 
  94.         else 
  95.         { 
  96.             $val=htmlspecialchars($val,$flags); 
  97.         } 
  98.         return $val; 
  99.     } 
  100.  
  101. } 
  102.  
  103. $test = new Test(); 
  104. $a = "<script>alert('admin');alert(\"党国\")</script><?php echo '123'?>";  
  105. $a = $test->RepPostStr($a);  
  106.   
  107. echo '<pre>';  
  108. print_r($a);  
  109. echo '</pre>';  

 

 

常用的几个工具函数: 

PHP Code复制内容到剪贴板
  1. <?php  
  2. /** 
  3.  * Copyright (C) 2012 Cxweb All rights reserved 
  4.  * Date: 2012-10-23 
  5.  * Description: 工具类 
  6.  */  
  7. class Utils {  
  8.   
  9.     /** 
  10.      * 判断$time是否在$startTime和$endTime之间 
  11.      * @param int $time 
  12.      * @param int $startTime 
  13.      * @param int $endTime 
  14.      * @param bool $strict 是否对0进行严格比对,false的话,当$startTime==0 && $endTime==0是返回true, 
  15.      * @return bool 
  16.      */  
  17.     public static function isTimestampBetween($time$startTime$endTime$strict = false) {  
  18.         if ($strict && $startTime == 0 && $endTime == 0) {  
  19.             return false;  
  20.         }  
  21.         return ($time >= $startTime && $time <= $endTime) || ($time >= $startTime && $endTime == 0);  
  22.     }  
  23.   
  24.     /** 
  25.      * 获取中英文字符的字数 
  26.      * http://bbs.cxweb.com.cn/thread-793-1-1.html 
  27.      * @param string $str 
  28.      * @return int 
  29.      */  
  30.     public static function getWordCount($str) {  
  31.         preg_replace('/[\x80-\xff]{1,3}/'' '$str,-1,$n);  
  32.         $n += str_word_count($str);  
  33.         return $n;  
  34.     }  
  35.   
  36.     //获取当前时间  
  37.     public static function getCurrentDateTime() {  
  38.         return date("Y-m-d H:i:s");  
  39.     }  
  40.   
  41.     //获取当前月份的第一天  
  42.     public static function getCurMonthFirstDay($date) {  
  43.         return date('Y-m-d'strtotime(date('Y-m-01'strtotime($date))));  
  44.     }  
  45.   
  46.     //获取当前日期  
  47.     public static function getCurrentDate() {  
  48.         return date("Y-m-d");  
  49.     }  
  50.   
  51.   
  52.     public static function getCurMonthLastDay($date) {  
  53.         return date('Y-m-d'strtotime(date('Y-m-01'strtotime($date)) . ' +1 month -1 day'));  
  54.     }  
  55.   
  56.     public static function get_basename($filename){  
  57.         return preg_replace('/^.+[\\\\\\/]/'''$filename);  
  58.     }  
  59.   
  60.     public static function getNextTwoStr($tow_str_cur = '00') {  
  61.         $arr = array();  
  62.         $x = array(0,1,2,3,4,5,6,7,8,9,'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');  
  63.         foreach ($x as $x1) {  
  64.             foreach ($x as $y1) {  
  65.                 $v = $x1.$y1;  
  66.                 $arr[$v] = $v;  
  67.             }  
  68.         }  
  69.   
  70.         foreach ($arr as $k=>$v) {  
  71.             next($arr);  
  72.             if ($v == $tow_str_cur) {  
  73.                 return prev($arr);  
  74.             }  
  75.         }  
  76.         return false;  
  77.     }  
  78.   
  79.   
  80.     /** 
  81.      * Returns the url query as associative array 
  82.      * 
  83.      * @param    string    query 
  84.      * @return    array    params 
  85.      */  
  86.     public static function convertUrlQuery($query)  
  87.     {  
  88.         $queryParts = explode('&'$query);  
  89.   
  90.         $params = array();  
  91.         foreach ($queryParts as $param)  
  92.         {  
  93.             $item = explode('='$param);  
  94.             $params[$item[0]] = $item[1];  
  95.         }  
  96.   
  97.         return $params;  
  98.     }  
  99.   
  100.     public static function getUrlQuery($array_query)  
  101.     {  
  102.         $tmp = array();  
  103.         foreach($array_query as $k=>$param)  
  104.         {  
  105.             $tmp[] = $k.'='.$param;  
  106.         }  
  107.         $params = implode('&',$tmp);  
  108.         return $params;  
  109.     }  
  110.   
  111.     public static function changeStrFromUnderlineToHump($underline_str) {  
  112.         if (strpos($underline_str , "_") !== false) {  
  113.             $humpStr = preg_replace("/(?:^|_)([a-z])/e","strtoupper('\\1')",$underline_str);  
  114.         } else {  
  115.             $humpStr = $underline_str;  
  116.         }  
  117.           
  118.         $humpStr = lcfirst($humpStr);  
  119.         return $humpStr;  
  120.     }  
  121.   
  122.     public static function changeStrToDomain($str) {  
  123.         $str = trim($str);  
  124.         if (emptyempty($str)) {  
  125.             return '';  
  126.         }  
  127.         $str = strtolower($str);  
  128.         $str = preg_replace('/[\s ]/''-'$str);  
  129.         $str = preg_replace('/[\s&]/''-'$str);  
  130.         return $str;  
  131.     }  
  132.   
  133.     //将数组中的key转换为驼峰  
  134.     public static function changeArrKeyFromUnderlineToHump($arr) {  
  135.   
  136.         foreach ($arr as $k=>&$v) {  
  137.             if (is_array($v)) {  
  138.                 $v = Utils::changeArrKeyFromUnderlineToHump($v);  
  139.             } else {  
  140.                 $nk = (Utils::changeStrFromUnderlineToHump($k));  
  141.                 if ($nk != $k) {  
  142.                     $arr[$nk] = $v;  
  143.                     unset($arr[$k]);  
  144.                 }  
  145.             }  
  146.         }  
  147.         return $arr;  
  148.     }  
  149.   
  150.     //将数组中的key驼峰转换为数据库下划线字段定义模式  
  151.     public static function changeArrKeyFromHumpToDbformat($arr) {  
  152.         //去掉员工id对条件的干扰  
  153.         unset($arr['op_employee_id']);  
  154.         unset($arr['opEmployeeId']);  
  155.   
  156.         foreach ($arr as $k=>&$v) {  
  157.             if (is_array($v)) {  
  158.                 $v = Utils::changeArrKeyFromHumpToDbformat($v);  
  159.             } else {  
  160.                 $nk = (Utils::changeStrFromHumpToDbformat($k));  
  161.                 if ($nk != $k) {  
  162.                     $arr[$nk] = $v;  
  163.                     unset($arr[$k]);  
  164.                 }  
  165.             }  
  166.         }  
  167.         return $arr;  
  168.     }  
  169.   
  170.     public static function changeStrFromHumpToDbformat($hump_str) {  
  171.         if (!preg_match('/^[a-z]+$/'$hump_str)) {  
  172.             $newStr = preg_replace("/([A-Z])/e","_.strtolower('\\1')",$hump_str);  
  173.         } else {  
  174.             $newStr = $hump_str;  
  175.         }  
  176.           
  177.         $newStr = lcfirst($newStr);  
  178.         return $newStr;  
  179.     }  
  180.   
  181.     public static function path_info($filepath) {  
  182.         $path_parts = array();  
  183.         $path_parts ['dirname'] = rtrim(substr($filepath, 0, strrpos($filepath'/')),"/")."/";  
  184.         $path_parts ['basename'] = ltrim(substr($filepathstrrpos($filepath'/')),"/");  
  185.         $path_parts ['extension'] = substr(strrchr($filepath'.'), 1);  
  186.         $path_parts ['filename'] = ltrim(substr($path_parts ['basename'], 0, strrpos($path_parts ['basename'], '.')),"/");  
  187.         return $path_parts;  
  188.     }  
  189.   
  190.     public static function randStr($len=6,$format='NUMBER') {  
  191.         switch($format) {  
  192.             case 'ALL':  
  193.                 $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~'break;  
  194.             case 'CHAR':  
  195.                 $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-@#~'break;  
  196.             case 'LETTER':  
  197.                 $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ'break;  
  198.             case 'NUMBER':  
  199.                 $chars='0123456789'break;  
  200.             case 'LCL_NUM':  
  201.                 $chars='abcdefghijklmnopqrstuvwxyz0123456789'break;  
  202.             default :  
  203.                 $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~';  
  204.                 break;  
  205.         }  
  206.         mt_srand((double)microtime()*1000000*getmypid());  
  207.         $password="";  
  208.         while(strlen($password)<$len)  
  209.             $password.=substr($chars,(mt_rand()%strlen($chars)),1);  
  210.         return $password;  
  211.     }  
  212.   
  213.     public static function getDateWCn($date) {  
  214.         $nStr = array('日','一','二','三','四','五','六');  
  215.         $ddate("w",strtotime($date));  
  216.         return $nStr[$d];  
  217.     }  
  218.   
  219.     public static function getDateDiffDay($d1,$d2) {  
  220.         $time_1=strtotime($d1);  
  221.         $time_2=strtotime($d2);  
  222.         $d=round(abs($time_1-$time_2)/3600/24);  
  223.         return $d;  
  224.     }  
  225.   
  226.     public static function getDateDiffDayPM($d1,$d2) {  
  227.         $time_1=strtotime($d1);  
  228.         $time_2=strtotime($d2);  
  229.         $d=round(($time_1-$time_2)/3600/24);  
  230.         return $d;  
  231.     }  
  232.   
  233.     public static function deleteHtml($str)  
  234.     {  
  235.         $str = trim($str);  
  236.         $str = strip_tags($str,"");  
  237.         $str = ereg_replace("\t","",$str);  
  238.         $str = ereg_replace("\r\n","",$str);  
  239.         $str = ereg_replace("\r","",$str);  
  240.         $str = ereg_replace("\n","",$str);  
  241.         $str = ereg_replace(" ","",$str);  
  242.         return trim($str);  
  243.     }  
  244.   
  245.     public static function ToChinaseNum($num)  
  246.     {  
  247.         $char = array("零","一","二","三","四","五","六","七","八","九");  
  248.         $dw = array("","十","百","千","万","亿","兆");  
  249.         $retval = "";  
  250.         $proZero = false;  
  251.         for($i = 0;$i < strlen($num);$i++)  
  252.         {  
  253.             if($i > 0)    $temp = (int)(($num % pow (10,$i+1)) / pow (10,$i));  
  254.             else $temp = (int)($num % pow (10,1));  
  255.   
  256.             if($proZero == true && $temp == 0) continue;  
  257.   
  258.             if($temp == 0) $proZero = true;  
  259.             else $proZero = false;  
  260.   
  261.             if($proZero)  
  262.             {  
  263.                 if($retval == ""continue;  
  264.                 $retval = $char[$temp].$retval;  
  265.             }  
  266.             else $retval = $char[$temp].$dw[$i].$retval;  
  267.         }  
  268.         if($retval == "一十"$retval = "十";  
  269.         return $retval;  
  270.     }  
  271.   
  272.     /** 
  273.      * 人民币小写转大写 
  274.      * 
  275.      * @param string $number 数值 
  276.      * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" 
  277.      * @param bool $is_round 是否对小数进行四舍五入 
  278.      * @param bool $is_extra_zero 是否对整数部分以0结尾,小数存在的数字附加0,比如1960.30, 
  279.      *             有的系统要求输出"壹仟玖佰陆拾元零叁角",实际上"壹仟玖佰陆拾元叁角"也是对的 
  280.      * @return string 
  281.      */  
  282.     public static function num2rmb($number = 0, $int_unit = '元'$is_round = TRUE, $is_extra_zero = FALSE)  
  283.     {  
  284.         // 将数字切分成两段  
  285.         $parts = explode('.'$number, 2);  
  286.         $int = isset($parts[0]) ? strval($parts[0]) : '0';  
  287.         $dec = isset($parts[1]) ? strval($parts[1]) : '';  
  288.   
  289.         // 如果小数点后多于2位,不四舍五入就直接截,否则就处理  
  290.         $dec_len = strlen($dec);  
  291.         if (isset($parts[1]) && $dec_len > 2)  
  292.         {  
  293.             $dec = $is_round  
  294.             ? substr(strrchr(strval(round(floatval("0.".$dec), 2)), '.'), 1)  
  295.             : substr($parts[1], 0, 2);  
  296.         }  
  297.   
  298.         // 当number为0.001时,小数点后的金额为0元  
  299.         if(emptyempty($int) && emptyempty($dec))  
  300.         {  
  301.             return '零';  
  302.         }  
  303.   
  304.         // 定义  
  305.         $chs = array('0','壹','贰','叁','肆','伍','陆','柒','捌','玖');  
  306.         $uni = array('','拾','佰','仟');  
  307.         $dec_uni = array('角''分');  
  308.         $exp = array('''万');  
  309.         $res = '';  
  310.   
  311.         // 整数部分从右向左找  
  312.         for($i = strlen($int) - 1, $k = 0; $i >= 0; $k++)  
  313.         {  
  314.             $str = '';  
  315.             // 按照中文读写习惯,每4个字为一段进行转化,i一直在减  
  316.             for($j = 0; $j < 4 && $i >= 0; $j++, $i--)  
  317.             {  
  318.                 $u = $int{$i} > 0 ? $uni[$j] : ''// 非0的数字后面添加单位  
  319.                 $str = $chs[$int{$i}] . $u . $str;  
  320.             }  
  321.             //echo $str."|".($k - 2)."<br>";  
  322.             $str = rtrim($str'0');// 去掉末尾的0  
  323.             $str = preg_replace("/0+/""零"$str); // 替换多个连续的0  
  324.             if(!isset($exp[$k]))  
  325.             {  
  326.                 $exp[$k] = $exp[$k - 2] . '亿'// 构建单位  
  327.             }  
  328.             $u2 = $str != '' ? $exp[$k] : '';  
  329.             $res = $str . $u2 . $res;  
  330.         }  
  331.   
  332.         // 如果小数部分处理完之后是00,需要处理下  
  333.         $dec = rtrim($dec'0');  
  334.   
  335.         // 小数部分从左向右找  
  336.         if(!emptyempty($dec))  
  337.         {  
  338.             $res .= $int_unit;  
  339.   
  340.             // 是否要在整数部分以0结尾的数字后附加0,有的系统有这要求  
  341.             if ($is_extra_zero)  
  342.             {  
  343.                 if (substr($int, -1) === '0')  
  344.                 {  
  345.                     $res.= '零';  
  346.                 }  
  347.             }  
  348.   
  349.             for($i = 0, $cnt = strlen($dec); $i < $cnt$i++)  
  350.             {  
  351.                 $u = $dec{$i} > 0 ? $dec_uni[$i] : ''// 非0的数字后面添加单位  
  352.                 $res .= $chs[$dec{$i}] . $u;  
  353.             }  
  354.             $res = rtrim($res'0');// 去掉末尾的0  
  355.             $res = preg_replace("/0+/""零"$res); // 替换多个连续的0  
  356.         }  
  357.         else  
  358.         {  
  359.             $res .= $int_unit . '整';  
  360.         }  
  361.         return $res;  
  362.     }  
  363.   
  364.   
  365.     public static function formatTime($date) {  
  366.         $str = '';  
  367.         $timer = strtotime($date);  
  368.         $diff = time() - $timer;  
  369.         $day = floor($diff / 86400);  
  370.         $free = $diff % 86400;  
  371.         if($day > 0) {  
  372.             return $day."天前";  
  373.         }else{  
  374.             if($free>0){  
  375.                 $hour = floor($free / 3600);  
  376.                 $free = $free % 3600;  
  377.                 if($hour>0){  
  378.                     return $hour."小时前";  
  379.                 }else{  
  380.                     if($free>0){  
  381.                         $min = floor($free / 60);  
  382.                         $free = $free % 60;  
  383.                         if($min>0){  
  384.                             return $min."分钟前";  
  385.                         }else{  
  386.                             if($free>0){  
  387.                                 return $free."秒前";  
  388.                             }else{  
  389.                                 return '刚刚';  
  390.                             }  
  391.                         }  
  392.                     }else{  
  393.                         return '刚刚';  
  394.                     }  
  395.                 }  
  396.             }else{  
  397.                 return '刚刚';  
  398.             }  
  399.         }  
  400.     }  
  401.   
  402.       
  403.      //获取客户端IP  
  404.      public static function getIP() {  
  405.         if (getenv('HTTP_CLIENT_IP')) {  
  406.             $ip = getenv('HTTP_CLIENT_IP');  
  407.         }  
  408.         elseif (getenv('HTTP_X_FORWARDED_FOR')) {  
  409.             $ip = getenv('HTTP_X_FORWARDED_FOR');  
  410.         }  
  411.         elseif (getenv('HTTP_X_FORWARDED')) {  
  412.             $ip = getenv('HTTP_X_FORWARDED');  
  413.         }  
  414.         elseif (getenv('HTTP_FORWARDED_FOR')) {  
  415.             $ip = getenv('HTTP_FORWARDED_FOR');  
  416.   
  417.         }  
  418.         elseif (getenv('HTTP_FORWARDED')) {  
  419.             $ip = getenv('HTTP_FORWARDED');  
  420.         }  
  421.         else {  
  422.             $ip = $_SERVER['REMOTE_ADDR'];  
  423.         }  
  424.         return $ip;  
  425.     }  
  426.        
  427.      //发送GET或POST请求  
  428.     public static function send_post($url$timeOut$postData$postAction) {  
  429.          $timeOut = isset($timeOut) ? $timeOut : "20000";  
  430.          $postdata = isset($postdata) ? http_build_query($post_data) : "";  
  431.          $postAction = isset($postAction) ? $postAction : "POST";  
  432.          $options = array(  
  433.          'http' => array(  
  434.          'method' => $postAction,  
  435.          'header' => 'Content-type:application/x-www-form-urlencoded',  
  436.          'content' => $postdata,  
  437.          'timeout' => $timeOut // 超时时间(单位:毫秒)  
  438.           )  
  439.         );  
  440.         $context = stream_context_create($options);  
  441.           
  442.         $result = file_get_contents($url, false, $context);  
  443.         //print_r($url."|".$context."|".$result."|");  
  444.         return $result;  
  445.      }  
  446.        
  447.   
  448.         
  449.     public static function getMillisecond() {   
  450.       list($s1$s2) = explode(' ', microtime());   
  451.       return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);   
  452.     }  
  453.       
  454.   
  455.     public static function getHttpResponsePOST($url$cacert_url$para$input_charset = '') {  
  456.   
  457.     if (trim($input_charset) != '') {  
  458.         $url = $url."_input_charset=".$input_charset;  
  459.     }  
  460.     $curl = curl_init($url);  
  461.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证  
  462.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证  
  463.     curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址  
  464.     curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头  
  465.     curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果  
  466.     curl_setopt($curl,CURLOPT_POST,true); // post传输数据  
  467.     curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据  
  468.     $responseText = curl_exec($curl);  
  469.     //var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容  
  470.     curl_close($curl);  
  471.       
  472.     return $responseText;  
  473.    }  
  474.   
  475.    public static function getHttpResponseGET($url) {  
  476.     $curl = curl_init($url);  
  477.     //$this_header = array("content-type: text/html;charset=utf-8");  
  478.     curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头  
  479.     curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果  
  480.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证  
  481.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证  
  482.     $responseText = curl_exec($curl);  
  483.     //var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容  
  484.     curl_close($curl);  
  485.       
  486.     return $responseText;  
  487.     }  
  488.   
  489.      
  490. }  

 

PHP Code复制内容到剪贴板
  1. //替换php代码  
  2. function RepPhpAspJspcode($string){  
  3.     global $public_r;  
  4.     if(!$public_r[candocode]){  
  5.         //$string=str_replace("<?xml","[!--ecms.xml--]",$string);  
  6.         $string=str_replace("<\\","<\\",$string); 
  7.         $string=str_replace("<?","<?",$string); 
  8.         $string=str_replace("<%","<%",$string); 
  9.         if(@stristr($string,' language')) 
  10.         { 
  11.             $string=preg_replace(array('!<script!i','!</script>!i'),array('<script','</script>'),$string); 
  12.         } 
  13.         //$string=str_replace("[!--ecms.xml--]","<?xml",$string); 
  14.     } 
  15.     return $string; 
  16. } 
  17.  
  18. //替换php代码 
  19. function RepPhpAspJspcodeText($string){ 
  20.     //$string=str_replace("<?xml","[!--ecms.xml--]",$string); 
  21.     $string=str_replace("<\\","<\\",$string); 
  22.     $string=str_replace("<?","<?",$string); 
  23.     $string=str_replace("<%","<%",$string); 
  24.     if(@stristr($string,' language')) 
  25.     { 
  26.         $string=preg_replace(array('!<script!i','!</script>!i'),array('<script','</script>'),$string); 
  27.     } 
  28.     //$string=str_replace("[!--ecms.xml--]","<?xml",$string); 
  29.     $string=str_replace("<!--code.start-->","<!--code.start-->",$string); 
  30.     $string=str_replace("<!--code.end-->","<!--code.end-->",$string);  
  31.     return $string;  
  32. }  

 

 

 

PHP Code复制内容到剪贴板
  1. //取得IP  
  2. function egetip(){  
  3.     if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown'))   
  4.     {  
  5.         $ip=getenv('HTTP_CLIENT_IP');  
  6.     }   
  7.     elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown'))  
  8.     {  
  9.         $ip=getenv('HTTP_X_FORWARDED_FOR');  
  10.     }  
  11.     elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown'))  
  12.     {  
  13.         $ip=getenv('REMOTE_ADDR');  
  14.     }  
  15.     elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown'))  
  16.     {  
  17.         $ip=$_SERVER['REMOTE_ADDR'];  
  18.     }  
  19.     $ip=RepPostVar(preg_replace("/^([\d\.]+).*/","\\1",$ip));  
  20.     return $ip;  
  21. }  
  22. //取得端口  
  23. function egetipport(){  
  24.     $ipport=(int)$_SERVER['REMOTE_PORT'];  
  25.     return $ipport;  
  26. }  

 

PHP生成缩略图函数

PHP Code复制内容到剪贴板
  1. function img_create_small($big_img$width$height$small_img) {//原始大图地址,缩略图宽度,高度,缩略图地址  
  2.     $imgage = getimagesize($big_img); //得到原始大图片  
  3.     switch ($imgage[2]) { // 图像类型判断  
  4.         case 1:  
  5.             $im = imagecreatefromgif($big_img);  
  6.             break;  
  7.         case 2:  
  8.             $im = imagecreatefromjpeg($big_img);  
  9.             break;  
  10.         case 3:  
  11.             $im = imagecreatefrompng($big_img);  
  12.             break;  
  13.     }  
  14.     $src_W = $imgage[0]; //获取大图片宽度  
  15.     $src_H = $imgage[1]; //获取大图片高度  
  16.     $tn = imagecreatetruecolor($width$height); //创建缩略图  
  17.     imagecopyresampled($tn$im, 0, 0, 0, 0, $width$height$src_W$src_H); //复制图像并改变大小  
  18.     imagejpeg($tn$small_img); //输出图像  
  19. }  

 

 


 

根据银行卡号判断银行和卡种

 bankList.php

PHP Code复制内容到剪贴板
  1. header('Content-type:text/html;charset=utf-8');   
  2. require_once('bankList.php');   
  3. function bankInfo($card,$bankList)   
  4. {   
  5.   $card_8 = substr($card, 0, 8);   
  6.   if (isset($bankList[$card_8])) {   
  7.     echo $bankList[$card_8];   
  8.     return;   
  9.   }   
  10.   $card_6 = substr($card, 0, 6);   
  11.   if (isset($bankList[$card_6])) {   
  12.     echo $bankList[$card_6];   
  13.     return;   
  14.   }   
  15.   $card_5 = substr($card, 0, 5);   
  16.   if (isset($bankList[$card_5])) {   
  17.     echo $bankList[$card_5];   
  18.     return;   
  19.   }   
  20.   $card_4 = substr($card, 0, 4);   
  21.   if (isset($bankList[$card_4])) {   
  22.     echo $bankList[$card_4];   
  23.     return;   
  24.   }   
  25.   echo '该卡号信息暂未录入';   
  26. }   
  27.     
  28. $bankInfo = bankInfo('6228481552887309119',$bankList);   

 获取到卡种信息一般都是长字符,根据卡种 ,获取对应的银行

PHP Code复制内容到剪贴板
  1. $bank = strstr($bankInfo,'银行',true).'银行';  

 

根据返回的$bank银行 来让银行列表的下拉框自动选中(ajax返回的$bank):

JavaScript Code复制内容到剪贴板
  1. // 设置页面Select对象的选中状态  
  2. function getSelectState(selectId, optionValue){  
  3.     var sel = document.getElementById(selectId);  
  4.     for(var i=0;i<sel.length;i++) {  
  5.      if(sel.options[i].value == optionValue) {  
  6.         sel.selectedIndex = i;  
  7.         break;  
  8.      }  
  9.     }  
  10. }  

调用:

JavaScript Code复制内容到剪贴板
  1. //json是ajax返回的数据,其实bank则是$bank的银行信息,inputBankName是下拉框的ID值  
  2. getSelectState("inputBankName", json.bank);  

 

 

 


 

php函数serialize()与unserialize()
serialize — 产生一个可存储的值的表示
unserialize — 从已存储的表示中创建 PHP 的值

例:

PHP Code复制内容到剪贴板
  1. Array (   
  2.     [bankuser] => yoyo   
  3.     [bankname] => 工商银行   
  4.     [bankcard] => 6222248745145698840   
  5.     [bankPhone] => 15088888888   
  6.     [lastNum] => 8840   
  7. )  


用serialize函数将这个数组转化为一个序列化的字符串,用于存储进数据库
如:

PHP Code复制内容到剪贴板
  1. <?php  
  2. $arr = serialize($arr);  
  3. print_r($arr);  
  4. //打印出来为:  
  5. //a:4:{s:8:"bankuser";s:6:"yoyo";s:8:"bankname";s:12:"工商银行";s:8:"bankcard";s:19:"6222248745145698840";s:9:"bankPhone";s:11:"15088888888";}  
  6. //  
  7. ?>  

读表的时候,读到这串字符的时候,再还原已经序列化的对象

PHP Code复制内容到剪贴板
  1. <?php  
  2. $pet = unserialize($arr);  
  3. ?>  


打印出来则恢复数组对象

 


 

筛选 / 分页通用接口

PHP Code复制内容到剪贴板
  1. <?php  
  2.    //==================================================================  
  3.    //函数名:   getReferrerIncomes  
  4.    //作者:     yoyo  
  5.    //日期:     2016-09-12  
  6.    //功能:     获取提现列表  
  7.    //参数:    
  8.    //pageNo        当前页数  
  9.    //pageSize      每页条数预处理  
  10.    //startDate     提现记录的记录开始时间  
  11.    //endDate       提现记录的记录结束时间  
  12.    //filter        筛选的数据  
  13.    //返回值:      array  
  14.    //修改记录:  
  15.    //==================================================================  
  16.    public function getReferrerIncomes($post){  
  17.        //转换参数形式  
  18.        foreach ($post as $kp=>$p) {  
  19.            $$kp = $p;  
  20.        }  
  21.        //页数预处理  
  22.        (isset($pageNo) && is_numeric($pageNo)) ? $pageNo = $pageNo : $pageNo = 1;  
  23.        //每页条数预处理  
  24.        (isset($pageSize) && is_numeric($pageSize)) ? $pageSize = $pageSize : $pageSize = 10;  
  25.          
  26.        //查询状态只能为未审核,审核通过,和提现成功  
  27.        $whereA = ' and deleted = 0 and status in("new","success","complete")';  
  28.        if($startDate && $endDate ){  
  29.            $whereA .= ' and date_added between "'.$startDate.'" and "'.$endDate.'"';  
  30.        }  
  31.          
  32.        //过滤筛选条件  
  33.        $filter = array(  
  34.            'id'                => $id,  
  35.            'user_id'           => $userId,  
  36.            'uid'               => $uid,  
  37.            'sourse'            => $sourse  
  38.        );  
  39.        //排除条件为空时  
  40.        foreach ($filter as $k => $v) {  
  41.   
  42.            if (empty($v)) {  
  43.                unset($filter[$k]);  
  44.            }  
  45.   
  46.        }  
  47.        $s = ' where del_flag=0';  
  48.   
  49.        foreach ($filter as $k=>$v){  
  50.            if (is_string($v)) {  
  51.                $v = addslashes($v);  
  52.            }  
  53.            $s .= " and `$k`='$v'";  
  54.        }  
  55.   
  56.   
  57.        $sql   = "SELECT count(*) as total FROM `" . DB_PREFIX . "referrer_income`" .$whereA;  
  58.          
  59.        $query = $this->db->query($sql);  
  60.        $count = $query->row['total'];  
  61.          
  62.        //获取最大页数  
  63.        $pages = ceil($count/$pageSize);  
  64.        //如果传递的页码大于总页数,则取最大页数  
  65.        if ($pageNo > $pages && $pages!=0) {  
  66.            $pageNo = $pages;  
  67.        }  
  68.        //开始的记录位置  
  69.        $start = ($pageNo - 1) * $pageSize;  
  70.        //记录范围  
  71.        $limit = $pageSize;  
  72.        //根据筛选条件获取记录  
  73.        $sql   = "SELECT * FROM `" . DB_PREFIX . "referrer_income`".$whereA." order by date_added desc limit $start, $limit";  
  74.        $rows = $this->getRows($sql);  
  75.          
  76.        foreach ($rows as $key => &$v) {  
  77.            $s = '';  
  78.            switch ($v['status']) {  
  79.                case 'new':  
  80.                    $status_des = '未审核';  
  81.                    break;  
  82.                case 'invalid':  
  83.                    $status_des = '无效';  
  84.                    break;  
  85.                case 'nopass':  
  86.                    $status_des = '审核未通过';  
  87.                    break;  
  88.                case 'complete':  
  89.                    $status_des = '审核通过';  
  90.                    break;  
  91.                case 'success':  
  92.                    $status_des = '转账成功';  
  93.                    break;  
  94.            };  
  95.            $v['status_des']  =>  $status_des;          
  96.        }  
  97.        //返回数组对象  
  98.        $res = array(  
  99.            'count' => $count,  
  100.            'pageNo' => $pageNo,  
  101.            'pages' => $pages,  
  102.            'rows' => $rows  
  103.        );  
  104.        return $res;  
  105.    }  

 

 


 

PHP判断变量类型 / 判断类型:

PHP Code复制内容到剪贴板
  1. gettype()  

用来取得变量的类型。返回的类型字符串可能为下列字符串其中之一:integer、double、string、array、object、unknown type

PHP Code复制内容到剪贴板
  1. is_numeric ( mixed var ):   
  2. //检验测定变量是不是为数码或数码字符串   
  3.   
  4. is_bool():   
  5. //检验测定变量是不是是布尔型   
  6.   
  7. is_float():   
  8. //检验测定变量是不是是浮点型 和is_double,is_real()都同样的用法  
  9.    
  10. is_int():   
  11. //检验测定变量是不是是整儿is_integer()同样的用法  
  12.    
  13. is_string():   
  14. //检验测定变量是不是是字符串   
  15.   
  16. is_object():   
  17. //检验测定变量是不是是一个对象   
  18.   
  19. is_array():   
  20. //检验测定变量是不是是数组   
  21.   
  22. is_null():   
  23. //检验测定变量是不是为 灭茬 值是不是是灭茬巨细写敏感   

 

通用:

判断是否为对象或数组:

PHP Code复制内容到剪贴板
  1. $obj = [];  
  2. if(is_object($obj)||is_array($obj)){  
  3.     return $obj;  
  4. }  

 

 

 

 


 

PHP实现将科学计数法转换为原始数字字符串的方法 

PHP Code复制内容到剪贴板
  1. <?php  
  2. function NumToStr($num){  
  3.     if (stripos($num,'e')===false) return $num;  
  4.     $num = trim(preg_replace('/[=\'"]/','',$num,1),'"');//出现科学计数法,还原成字符串   
  5.     $result = "";  
  6.     while ($num > 0){  
  7.         $v = $num - floor($num / 10)*10;  
  8.         $num = floor($num / 10);  
  9.         $result   =   $v . $result;  
  10.     }  
  11.     return $result;  
  12. }  

 

PHP替换字符串,数组的形式,与单字符串:

PHP Code复制内容到剪贴板
  1. // $bargain['tips2'] = 您今日已砍价 [!--num1--] 次,每个小伙伴每天只能参与 [!--num2--] 次砍价活动哦~  
  2. // num = 1  
  3. // $bargain['user_cut_number'] = 5  
  4.   
  5. $str1 = [  
  6.                 "[!--num1--]",  
  7.                 "[!--num2--]"  
  8.             ];  
  9.             $str2 = [  
  10.                 $num,  
  11.                 $bargain['user_cut_number']  
  12.             ];  
  13.             $mes = str_replace($str1,$str2,$bargain['tips2']);  
  14.             return $mes;  

 

PHP Code复制内容到剪贴板
  1. $str = "[!--num--]";  
  2. $mes = str_replace($str,$num,$bargain['tips2']);  
  3. return $mes;  

 

PHP Code复制内容到剪贴板
  1. private $api_tags_users = "https://qyapi.weixin.qq.com/cgi-bin/tag/get?access_token=ACCESS_TOKEN&tagid=TAGID";  
  2.   
  3. function test(){  
  4.     $url = str_replace(['ACCESS_TOKEN''TAGID'], [$this->acces->access(), $tagid], $this->api_tags_users);  
  5.   
  6.     return $url;  
  7. }  

 

 


检测数据类型 (数字,字母,数字+字母,数字+字母+下划线,数字+字母+下划线+点)

PHP Code复制内容到剪贴板
  1. //checkstrtype  
  2. function eCheckStrType($type,$str,$doing=0){  
  3.     $ret=0;  
  4.     if($type==1)//数字  
  5.     {  
  6.         if(preg_match('/^[0-9]+$/',$str))  
  7.         {  
  8.             $ret=1;  
  9.         }  
  10.     }  
  11.     elseif($type==2)//字母  
  12.     {  
  13.         if(preg_match('/^[A-Za-z]+$/',$str))  
  14.         {  
  15.             $ret=1;  
  16.         }  
  17.     }  
  18.     elseif($type==3)//字母+数字  
  19.     {  
  20.         if(preg_match('/^[A-Za-z0-9]+$/',$str))  
  21.         {  
  22.             $ret=1;  
  23.         }  
  24.     }  
  25.     elseif($type==4)//字母+数字+下划线  
  26.     {  
  27.         if(preg_match('/^[A-Za-z0-9_]+$/',$str))  
  28.         {  
  29.             $ret=1;  
  30.         }  
  31.     }  
  32.     elseif($type==5)//字母+数字+下划线+点  
  33.     {  
  34.         if(preg_match('/^[A-Za-z0-9\-\._]+$/',$str))  
  35.         {  
  36.             $ret=1;  
  37.         }  
  38.     }  
  39.     else  
  40.     {  
  41.         $ret=0;  
  42.     }  
  43.     if($doing)  
  44.     {  
  45.         if($ret<1)  
  46.         {  
  47.             exit();  
  48.         }  
  49.     }  
  50.     return $ret;  
  51. }  

 

13、一个数字平均分成N等份

 

PHP Code复制内容到剪贴板
  1. /*  
  2. * @最优整数均分算法 
  3. * @param int $number 待平分的数字 
  4. * @param int $taotl 平分总个数 
  5. */  
  6. function getDivideNumber($number$total) {  
  7.     $divide_number  = bcdiv($number$total);    // 除法取平均数  
  8.     $last_number = bcsub($number$divide_number * $total);    // 获取剩余  
  9.     $number_str = str_repeat($divide_number.'|'$total - $last_number);    // 拼装平分后的数据  
  10.     $number_str2 = str_repeat(($divide_number + 1).'|'$last_number);    // 拼装剩下的分配  
  11.     $number_str = $number_str . $number_str2;    // 组合  
  12.     return explode('|', trim($number_str'|')); // 去掉前后多余的分隔符 返回数组  
  13. }  

 

场景1:在5天内,学习20道知识,平均每天学习几道

PHP Code复制内容到剪贴板
  1. $number = 20; // 在5天内,学习20道题,平均每天推送几道题  
  2. $total = 5;  
  3. $a = self::getDivideNumber($number,$total);  
Array
(
    [0] => 4
    [1] => 4
    [2] => 4
    [3] => 4
    [4] => 4
)

场景2:在6天内,学习20道知识,平均每天学习几道

PHP Code复制内容到剪贴板
  1. $number = 20; // 在6天内,学习20道题,平均每天推送几道题  
  2. $total = 6;  
  3. $a = self::getDivideNumber($number,$total);  
Array
(
    [0] => 3
    [1] => 3
    [2] => 3
    [3] => 3
    [4] => 3
    [5] => 5
)

 如果需要将5放在前面,前面困难一点,后面轻松一点,加一个反向函数

PHP Code复制内容到剪贴板
  1. // 如果需要反向  
  2.         p(array_reverse($a));  

 

或者换一下写法:

PHP Code复制内容到剪贴板
  1. /*  
  2. * @最优整数均分算法 
  3. * @param int $number 待平分的数字 
  4. * @param int $taotl 平分总个数 
  5. */  
  6. function getDivideNumber($number$total) {  
  7.     $divide_number  = bcdiv($number$total);    // 除法取平均数  
  8.     $last_number = bcsub($number$divide_number * $total);    // 获取剩余  
  9.     $number_str = str_repeat($divide_number.'|'$total - $last_number);    // 拼装平分后的数据  
  10.     $number_str2 = str_repeat(($divide_number + 1).'|'$last_number);    // 拼装剩下的分配  
  11.     $number_str = $number_str2 . $number_str;    // 组合  
  12.     return explode('|', trim($number_str'|')); // 去掉前后多余的分隔符 返回数组  
  13. }  
  14.   
  15. $arr = getDivideNumber(20, 8); //从大到小  
  16. print_r($arr);  

 


 14、广联达sign签名生成方法示例一

待签名的数组:

Array
(
    [projectId] => 123
    [appid] => 1234567
)

密钥是:ABCDEFGL

规则是:对传参的数组的key进行排行,然后key value拼接,在前面放上密钥,过程为:

 

1、排序过后的数组是:

Array
(
    [appid] => 1234567
    [projectId] => 123
)
 
2、key value拼接结果:
ABCDEFGLappid1234567projectId123ABCDEFGL
3、md5:
24b9acdc4de23cd6c8e3b5e16678a666

4、密钥全部大写:

24B9ACDC4DE23CD6C8E3B5E16678A666

 

PHP Code复制内容到剪贴板
  1. private function getSign($data){  
  2.     $secret = "ABCDEFGL";  
  3.     // 字母顺序排列  
  4.     // 根据数组的键,对关联数组进行升序排列  
  5.     ksort($data);  
  6.     $signString = "";  
  7.     //  
  8.     while (list($k$v) = each($data))  
  9.     {  
  10.         $tmp = "$k" . "$v";  
  11.         $signString .= $tmp;  
  12.     }  
  13.     $signString = $secret . $signString . $secret;  
  14.     $signString = strtoupper(md5($signString));  
  15.     return $signString;  
  16. }  

 

15、验证卡号输入是否正确,true是正确,false是不正确 

PHP Code复制内容到剪贴板
  1. public function check_bankCard($card_number){  
  2.     $arr_no = str_split($card_number);  
  3.     $last_n = $arr_no[count($arr_no)-1];  
  4.     krsort($arr_no);  
  5.     $i = 1;  
  6.     $total = 0;  
  7.     foreach ($arr_no as $n){  
  8.         if($i%2==0){  
  9.             $ix = $n*2;  
  10.             if($ix>=10){  
  11.                 $nx = 1 + ($ix % 10);  
  12.                 $total += $nx;  
  13.             }else{  
  14.                 $total += $ix;  
  15.             }  
  16.         }else{  
  17.             $total += $n;  
  18.         }  
  19.         $i++;  
  20.     }  
  21.     $total -= $last_n;  
  22.     $x = 10 - ($total % 10);  
  23.     if($x == $last_n){  
  24.         return true;  
  25.     }else{  
  26.         return false;  
  27.     }  
  28. }  

 

 

PHP常用函数桌面.jpg

 

本文来自于:http://www.yoyo88.cn/note/backend/12.html

上一篇 返回列表
Powered by yoyo苏ICP备15045725号