导航

PHP常用函数(1)

Posted on 2016-06-02 10:20  单只蝴蝶  阅读(319)  评论(0编辑  收藏  举报

1. create_linkstring

说明: 把数组拼接成字符串

 1 if (!function_exists('create_linkstring')) {
 2     /**
 3      * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
 4      * @param $para 需要拼接的数组
 5      * return 拼接完成以后的字符串
 6      */
 7     function create_linkstring($para)
 8     {
 9         if (!is_array($para)) {
10             return $para;
11         }
12 
13         $arg  = "";
14         while (list($key, $val) = each($para)) {
15             $arg.=$key."=".$val."&";
16         }
17         $arg = substr($arg, 0, -1);
18     
19         //如果存在转义字符,那么去掉转义
20         if ( get_magic_quotes_gpc() ) {
21             $arg = stripslashes($arg);
22         }
23     
24         return $arg;
25     }
26 }
View Code

 

2. resolve_linkstring 

说明: 将URL参数字符串转换成数组

 1 if (!function_exists('resolve_linkstring')) {
 2     /**
 3      * 将URL参数字符串转换成数组
 4      * 例如:mobile=18683338411&password=123456形式字符串拆分为数组
 5      * array['mobile'=>'18683338412', 'password'=>'123456']
 6      * @param string $para 解析的字符串
 7      * @return array|null
 8      */
 9     function resolve_linkstring($para)
10     {
11         if (!Str::contains($para, '=')) {
12             return $para;
13         }
14         
15         $para = explode('&', $para);
16         $arg = array();
17         foreach ($para as $val) {
18             list($key, $value) = explode('=', $val);
19             $arg[$key] = $value;
20         }
21         
22         return $arg;
23     }
24 }
View Code

 

3. check_signature

说明:URL签名校验

 1 if (!function_exists('check_signature')) {
 2     /**
 3      *
 4      * @desc 检查签名是否正确
 5      * @param $signature url中的签名
 6      * @param $timestamp url中的时间戳
 7      * @param $nonce url中的随机字符串
 8      * @return int [200 校验成功 1 参数不全 2 时间过期 3签名错误]
 9      */
10     function check_signature($signature, $timestamp, $nonce)
11     {
12         if (empty($signature)|| empty($timestamp) || empty($nonce)) {
13             return 1;
14         }
15 
16         // 获得参数校验 【不同场景,配置不同】
17         $secret = config('appinit.secret');
18         $expire = config('appinit.expire');
19         
20         // 请求时间超过有效期
21         if ( time() >= $expire + $timestamp ) {
22             return 2;
23         }
24         
25         $tmpArr = array($secret, $timestamp, $nonce);
26         sort($tmpArr, SORT_STRING);
27         $tmpStr = sha1(implode($tmpArr));
28         
29         return $tmpStr == $signature ? 200 : 3;
30     }
31 }
View Code

 

4. urlsafe_base64_*

说明:安全base64的加解密

 1 <?php
 2 // 安全base64的加解密
 3 if (!function_exists('urlsafe_base64_encode')) {
 4     /**
 5      * 安全的base64编码
 6      * @param string $string 加密字符串
 7      * return string 加密数据
 8      */
 9     function urlsafe_base64_encode($string)
10     {
11         return str_replace(['+','/','='], ['-','_',''], 
12                   base64_encode($string));
13     }
14 }
15 
16 if (!function_exists('urlsafe_base64_decode')) {
17     /**
18      * 安全的base64解码
19      * @param string $string 加密数据
20      * return string 解密数据原文
21      */
22     function urlsafe_base64_decode($string)
23     {
24         $data = str_replace(['-','_'], ['+','/'], $string);
25         $mod4 = strlen($data) % 4;
26         if ( $mod4 ) {
27             $data .= substr('====', $mod4);
28         }
29         
30         return base64_decode($data);
31     }
32 }
33 ?>
View Code