如何在Laravel中使用Base64编码URL?
我需要像这样的东西:
原始URL:http://localhost/dashboard/api/test/
编码后URL:http://localhost/dashboard/YXBpL3Rlc3Qv
Route::get('/dashboard/{code}', function($code){
$url = base64_decode($code);
//redirect according to $url ... for example "api/test/"
return redirect( $url );
});
我找到了这段代码,它对我很有帮助。我只是想找一个可以去掉base64字符串中“=”符号的东西,就像这样:
Original Answer翻译成"最初的回答"
<?php
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
?>
例子:
dump(rtrim(strtr(base64_encode('Hello World'), '+/', '-_'), '='));
$encodedString = rtrim(strtr(base64_encode('Hello World'), '+/', '-_'), '=');
dd(base64_decode(str_pad(strtr($encodedString, '-_', '+/'), strlen($encodedString) % 4, '=')));
最初的回答
str_pad()
既是不正确的,也是不必要的。因为% 4
始终小于4,并且传递的字符串很可能比4个字符更长,所以永远不会添加填充。而且,base64_decode()
无关紧要的结束时的'='填充。 - Ken