# tools **Repository Path**: xfjpeter/tools ## Basic Information - **Project Name**: tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-10 - **Last Updated**: 2025-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 字符串操作 ## 截取字符串 ```php cut('http://www.johnxu.net', 0, 3); var_dump($res); // htt ``` ## 转换编码 ```php encoding('我们是好朋友', 'GBK'); var_dump($res); // �����Ǻ����� var_dump(Str::getInstance()->encoding('�����Ǻ�����', 'UTF-8')); // 我们是好朋友 ``` ## 内置方法 - cut(string, start , length) 截取字符串 - lower(string) // 转换小写 - upper(string) // 转换大小 - has(string, neddle) // 查找是否存在该字符串 - remove(string, neddle) // 去除字符串 - reverse(string) // 翻转字符串 - arrayToString(array) // 将数组转换成字符串 - stringToArray(string) // 将字符串转换成数组 - ucwords(string) // 将字符串每个单子首字母大写 - ucfirst(string) // 将字符首字母大写 - generateTradeNo(length) // 创建订单号\ - generateUid(); // 创建用户ID - getMachineCode(block, blockSize, split); // 创建机器激活码:8E8363C1-094E0EDC-7D67C393 - formatBytes(size, delimiter); // 格式化文件大小:10KB, 10MB ## RSA生成签名串 ```php array( 'appid' => 1234, 'key' => 5678 ), 'site_url' => 'http://www.johnxu.net' ); // 批量设置 johnxu\tool\Config::batch($config); // 单独设置 johnxu\tool\Config::set('wx', $config['wx']); // 取值 johnxu\tool\Config::get('wx'); johnxu\tool\Config::get('wx.appid'); ``` ## http请求的使用 ```php request('http://www.baidu.com'); if ($response->getCode() == 200) { var_dump($response->get('data'));// 原始数据 var_dump($response->getContent(false)); // 同上 var_dump($response->getContent()); // json解析后的数据(数组) } ``` ## RESTFul风格的接口(只支持tp5) ```php 1, 'authorization' => false, 'nickname' => 'tom', 'age' => 25, 'sex' => 'male', 'email' => 'tom@163.com' ), array( 'uid' => 2, 'authorization' => false, 'nickname' => 'Alice', 'age' => 25, 'sex' => 'female', 'email' => 'Alice@163.com' ), array( 'uid' => 3, 'authorization' => true, 'nickname' => 'peter', 'age' => 30, 'sex' => 'male', 'email' => 'peter@163.com' ), ); // 获取所有的用户 public function index() { $this->ok( Restful::HTTP_RESPONSE_OK, $this->users ); } // 获取指定用户的信息 public function get( $uid ) { foreach ( $this->users as $user ) { if ( $user['uid'] == $uid ) { if ( $user['authorization'] == false ) { // {"uid":2,"authorization":false,"nickname":"Alice","age":25,"sex":"female","email":"Alice@163.com"} $this->ok( Restful::HTTP_RESPONSE_OK, $user ); } else { // {"err_code":2001,"message":"UnAuthorization"} $this->fail( Restful::HTTP_RESPONSE_UN_AUTHORIZATION, 2001, 'UnAuthorization' ); } } } // {"err_code":1001,"message":"Not Found"} $this->fail( Restful::HTTP_RESPONSE_NOT_FOUND, 1001, 'Not Found' ); } } ``` ```php getMessage()); } catch (InvalidParamException $e) { var_dump($e->getMessage()); } // 公钥验签 try { $flag = Rsa::verify($signature, $publicKey, 'RSA2'); var_dump($flag); } catch (InvalidParamException $e) { var_dump($e->getMessage()); } catch (InvalidVerifyException $e) { var_dump($e->getMessage()); } ``` ## RSA加密与解密 ```php getMessage()); } // 私钥解密 try { $decrypted = Rsa::decrypt($crypted, $privateKey); var_dump($decrypted); } catch(InvalidParamException $e) { var_dump($e->getMessage()); } // 私钥加密 === 公钥解密 // 私钥加密 try { $crypted = Rsa::encrypt('123', $privateKey, false); var_dump($crypted); } catch (InvalidParamException $e) { var_dump($e->getMessage()); } // 公钥解密 try { $decrypted = Rsa::decrypt($crypted, $publicKey, false); var_dump($decrypted); } catch (InvalidParamException $e) { var_dump($e->getMessage()); } ``` ## 用户授权管理 ```php 1551139200 * [1] => 1551225599 * ) */ // 获取昨天的时间戳(开始,结束) $yesterday = Time::yesterday(); // 获取本周开始和结束的时间戳 $week = Time::week(); // 上周开始和结束的时间戳 $lastWeek = Time::lastWeek(); // 本月开始和结束的时间戳 Time::month(); // 上月开始和结束的时间戳 Time::lastMonth(); // 今年开始和结束的时间戳 Time::year(); // 去年开始和结束的时间戳 Time::lastYear(); // 获取7天前零点到现在的时间戳 Time::dayToNow(7); // 获取7天前零点到昨日结束的时间戳 Time::dayToNow(7, true); // 获取7天前的时间戳 Time::daysAgo(7); // 获取7天后的时间戳 Time::daysAfter(7); // 天数转换成秒数 Time::daysToSecond(5); // 周数转换成秒数 Time::weekToSecond(5); ``` ## ~~JWT验证(已废弃)~~ ```php '123456', ]); $payload = [ 'iss' => 'johnxu', // 该jwt的签发者 'iat' => time(), // 签发时间 'exp' => time() + 7200, // 过期时间 'nbf' => time() + 60, // 该时间之前不接收处理该Token 'sub' => 'www.johnxu.net', // 面向的用户 'jti' => md5(uniqid('jwt').time()) // 该token的唯一值 ]; // 获取token $token = $jwt->getToken($payload); // echo $token; // eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9.eyJpc3MiOiJqb2hueHUiLCJpYXQiOjE1NTUzOTA5MzEsImV4cCI6MTU1NTM5ODEzMSwibmJmIjoxNTU1MzkwOTkxLCJzdWIiOiJ3d3cuam9obnh1Lm5ldCIsImp0aSI6ImE0NGQ1M2QzNmUzZjA0ODQ4NWUyNmM4NWRkMjhhODNmIn0.qPJkuuC41UI4usTdelZaGYF3ahGT3WmByjEhg50FrjY // 校验 $result = $jwt->verify('eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9.eyJpc3MiOiJqb2hueHUiLCJpYXQiOjE1NTUzOTA5MzEsImV4cCI6MTU1NTM5ODEzMSwibmJmIjoxNTU1MzkwOTkxLCJzdWIiOiJ3d3cuam9obnh1Lm5ldCIsImp0aSI6ImE0NGQ1M2QzNmUzZjA0ODQ4NWUyNmM4NWRkMjhhODNmIn0.qPJkuuC41UI4usTdelZaGYF3ahGT3WmByjEhg50FrjY'); var_dump($result); ``` ## JWT(Json Web Tokens) ```php setHeader([ 'typ' => 'jwt', 'alg' => 'HS256', ]); $jwt->setExp(time() + 60); $jwt->setNbf(time() + 30); $jwt->setJti(Str::getInstance()->generateTradeNo()); $jwt->setSub('权限验证'); $jwt->setIat(time()); $jwt->setIss('johnxu'); $jwt->setPayload([ 'token' => Str::getInstance()->getMachineCode(3, 8, ''), ]); try { var_dump($jwt->getToken()); } catch (InvalidParamException $e) { var_dump($e->getMessage()); // 接管参数异常 } // 验证token签名 $token = 'eyJ0eXAiOiJqd3QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NjM0MTg0NDIsImF1ZCI6bnVsbCwiZXhwIjoxNTYzNDE5NDQyLCJzdWIiOiLmnYPpmZDpqozor4EiLCJpc3MiOiJqb2hueHUiLCJuYmYiOjE1NjM0MTg1MDIsImp0aSI6IjIwMTkwNzE4MTA1NDAyNTI5NzU2NDg1NyIsInBheWxvYWQiOnsidG9rZW4iOiI3MTRGMkE5NzcwMkUxMTE1NTU1MzAwNkUifX0.LwINfASxIBSFuKd4U5MtjbUQhVDPTRcKsaGC9Ud7jVM'; $jwt = new Jwt(); try { var_dump($jwt->verify($token)); /** array(8) { ["iat"] => int(1563419701) ["aud"] => NULL ["exp"] => int(1563419761) ["sub"] => string(12) "权限验证" ["iss"] => string(6) "johnxu" ["nbf"] => int(1563419731) ["jti"] => string(24) "201907181115015153519854" ["payload"] => array(1) { ["token"] => string(24) "8C873A9101AFD2F4B00A8D60" } } */ } catch (InvalidSignatureException $e) { var_dump($e->getMessage()); // 签名错误 } catch (InvalidVerifyException $e) { var_dump($e->getMessage()); // 过期或者还没到生效期 } ``` ## AES 加密与解密 ### CBC方式加密解密 ```php encrypt('{"name":"johnxu","age":25,"email":"fsyzxz@163.com"}', $key, Aes::METHOD_AES_128_CBC, $iv); echo PHP_EOL; echo $aes->decrypt('bBBl028ESU3hjpxwIPzTf3ep+WT3k8FALPic8Hz9o99OMZVgAoJmBTjHxrQJIc1VffLjtBRxCldUvQLSAptQRA==', $key, Aes::METHOD_AES_128_CBC, $iv).PHP_EOL.PHP_EOL; } catch (Exception $e) { var_dump($e->getMessage()); } ``` ### ECB方式加密解密 ```php encrypt('{"name":"johnxu","age":25,"email":"fsyzxz@163.com"}', $key).PHP_EOL; echo $aes->decrypt('U8TELNRLE6l+JIM+nKO/4rg7ZaaJWOyLocU3MZPsDOnnkpbG/msHn63FOjvHCwjH8cmlCOi8wYmVKiLyq+Cdew==', $key).PHP_EOL; } catch(Exception $e) { var_dump($e->getMessage()); } ``` ## 压缩或解压文件 ```php zzip('./'); if (!$filename) { var_dump($zip->getError()); } else { var_dump($filename); } // 解压 $list = $zip->unzip('./test.zip', './test/'); if (!$list) { var_dump($zip->getError()); } else { var_dump($list); } ```