terpomoj/base64-url-helpers

提供base64_url_encode/base64_url_decode。

v0.1.0 2022-06-01 07:39 UTC

This package is auto-updated.

Last update: 2024-09-24 18:32:37 UTC


README

此包提供两个全局函数:base64_url_encodebase64_url_decode。我在很多项目中都使用了这些辅助工具。

什么是Base64 URL?

RFC 3548中,Base64 URL是Base64的一个变体,使用URL安全的字母表。它将标准Base64中的+/字符替换为-_。填充字符(=)可选择性移除或保留。

用法

使用composer安装

$ composer require terpomoj/base64-url-helpers

编码

编码

$encoded = base64_url_encode('🏳️‍⚧️🏳️‍🌈');

// $encoded is now '8J-Ps--4j-KAjeKap--4j_Cfj7PvuI_igI3wn4yI'

base64_url_encode还有一个可选的第二个参数,允许您指定是否要移除填充字符。默认为true,将移除填充字符。

$encode = base64_url_encode('🏳️‍⚧️');
// $encode = '8J-Ps--4j-KAjeKap004jw'

$encode = base64_url_encode('🏳️‍⚧️', removePadding: false);
// $encode = '8J-Ps--4j-KAjeKap004jw=='

解码

解码

$decoded = base64_url_decode('8J-Ps--4j-KAjeKap--4j_Cfj7PvuI_igI3wn4yI');

// $decoded is now '🏳️‍⚧️🏳️‍🌈'

与PHP的本地base64_decode类似,默认情况下,它允许您传递一个非有效的Base64字符串。

$decoded = base64_url_decode('8J-Ps--4j-KAjeKap--4j_Cfj7PvuI_igI3wn4yI!!!!!');
// $decoded is now '🏳️‍⚧️🏳️‍🌈'

$decoded = base64_url_decode('8J-Ps--4j-KAjeKap--4j_Cfj7PvuI_igI3wn4yI!!!!!', strict: true);
// $decodes is now false

为什么?

我使用URL安全的Base64的主要原因是为了编码二进制UUID,这样URL中的UUID可以比十六进制编码的UUID更短。

$uuid = base64_url_encode(Uuid::uuid4()->getBytes());
// $uuid is now 'oRZS8dRtR-GfBdCbaHwtkw'

许可证

许可协议为MIT。有关更多详细信息,请参阅LICENSE文件。