harvey/php-tools-box

PHP方法工具箱

v1.1.4 2025-01-16 01:36 UTC

This package is auto-updated.

Last update: 2025-06-16 02:44:04 UTC


README

👤作者

Harvey

📮邮箱

lenziye@qq.com

工具库

  • Hashids 加密ID库
  • PhpAnalysis 搜索分词
  • Snowflake 雪花算法,一种分布式唯一ID生成算法
  • 腾讯相关
    • WXBizDataCrypt 微信小程序用户加密数据的解密
    • TLSSigAPIv2 腾讯音视频通话签名
  • ApiAuthService Api签名验证

安装

composer require harvey/php-tools-box:^1.1.1  --ignore-platform-reqs

工具用法

Hashids

>是一个用于生成短小、可读性强的哈希字符串的开源库,可以将整数或数组转换为不可逆的字符串表示形式。它适用于许多场景,如隐藏敏感信息(比如数据库中的ID)、创建独特的URL短链等。

$obj = new \Harvey\Toolsbox\library\Hashids\Hashids;
$result1 = $obj->encode('00123456');

echo '加密  ===> ';
var_dump($result1);

$result2 = $obj->decode($result1);

echo '解密  ===> ';
var_dump($result2);

WXBizDataCrypt用法

use Harvey\Toolsbox\library\Tencent\wxBizDataCrypt\WXBizDataCrypt;

$appid = 'wx4f4bc4dec97d474b';
$sessionKey = 'tiihtNczf5v6AKRyjwEUhQ==';
$encryptedData="CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM
                QmRzooG2xrDcvSnxIMXFufNstNGTyaGS
                9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+
                3hVbJSRgv+4lGOETKUQz6OYStslQ142d
                NCuabNPGBzlooOmB231qMM85d2/fV6Ch
                evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6
                /1Xx1COxFvrc2d7UL/lmHInNlxuacJXw
                u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn
                /Hz7saL8xz+W//FRAUid1OksQaQx4CMs
                8LOddcQhULW4ucetDf96JcR3g0gfRK4P
                C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB
                6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns
                /8wR2SiRS7MNACwTyrGvt9ts8p12PKFd
                lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV
                oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG
                20f0a04COwfneQAGGwd5oa+T8yO5hzuy
                Db/XcxxmK01EpqOyuxINew==";

$iv = 'r7BXXKkLb8qrSNn05n0qiA==';
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
if ($errCode == 0) {
    print($data . "\n");
} else {
    print($errCode . "\n");
}


结果

{
"openId": "oGZUI0egBJY1zhBYw2KhdUfwVJJE",
"nickName": "Band",
"gender": 1,
"language": "zh_CN",
"city": "Guangzhou",
"province": "Guangdong",
"country": "CN",
"avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/aSKcBBPpibyKNicHNTMM0qJVh8Kjgiak2AHWr8MHM4WgMEm7GFhsf8OYrySdbvAMvTsw3mo8ibKicsnfN5pRjl1p8HQ/0",
"unionId": "ocMvos6NjeKLIBqg5Mr9QjxrP1FA",
"watermark": {
"timestamp": 1477314187,
"appid": "wx4f4bc4dec97d474b"
}
}

PhpAnalysis 用法

    use Harvey\Toolsbox\library\phpanalysis\PhpAnalysis;
    
  $teststr = "2010年1月,美国国际消费电子展 (CES)上,联想将展出一款基于ARM架构的新产品,这有可能是传统四大PC厂商首次推出的基于ARM架构的消费电子产品,也意味着在移动互联网和产业融合趋势下,传统的PC芯片霸主英特尔正在遭遇挑战。
11月12日,联想集团副总裁兼中国区总裁夏立向本报证实,联想基于ARM架构的新产品正在筹备中。
英特尔新闻发言人孟轶嘉表示,对第三方合作伙伴信息不便评论。";
        PhpAnalysis::$loadInit = false;
        $pri_dict = false;//预载全部词条
        $pa = new PhpAnalysis('utf-8', 'utf-8', $pri_dict);
        $pa->LoadDict();
        $pa->SetSource($teststr);
        $pa->differMax = true;//多元切分
        $pa->unitWord = true;//新词识别
        $do_fork = true;//岐义处理
        $pa->StartAnalysis($do_fork);
        $do_prop = false;//词性标注
        $okresult = $pa->GetFinallyResult(' ', $do_prop);
        $pa_foundWordStr = $pa->foundWordStr;
        dump('分词结果');
        dump($okresult);
        dump('自动识别词');
        dump($pa_foundWordStr);

Snowflake 雪花算法

  1. simple to use.
use Harvey\Toolsbox\library\Godruoyi\Snowflake\Snowflake;

$snowflake = new Snowflake();
$result = $snowflake->id();
var_dump($result);
// 1537200202186752
  1. Specify the data center ID and machine ID.
$snowflake = new Snowflake($datacenterId, $workerId);

$snowflake->id();
  1. Specify start time.
$snowflake = new Snowflake;
$snowflake->setStartTimeStamp(strtotime('2019-09-09')*1000);

$snowflake->id();

ApiAuthService Api签名验证

// 请求方
$buildUrl = \Harvey\Toolsbox\library\ApiAuthService::buildUrl('http://example.com', ['ts' => time(), 'a' => 1]);
var_dump($buildUrl);

// 接收方
$gets = explode('&', parse_url($buildUrl)['query']);
$params = [];
foreach ($gets as $get) {
    $arr = explode('=', $get);
    $params[$arr[0]] = $arr[1];
}
var_dump($params);
$result = \Harvey\Toolsbox\library\ApiAuthService::check($params);
var_dump('校验结果');
var_dump($result);