terpomoj / base64-url-helpers
提供base64_url_encode/base64_url_decode。
v0.1.0
2022-06-01 07:39 UTC
Requires
- php: >=8.0.0
README
此包提供两个全局函数:base64_url_encode
和 base64_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文件。