如何在 smarty 中进行 urlsafe_base64 编码?
How to do urlsafe_base64 encoding in smarty?
如何在smarty中进行urlsafe_base64编码?
我做了一个这样的函数:
function smarty_function_base($args, &$smarty){
$data = base64_encode($args['str']);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
它有效,但我想做这样的事情:
base64(host:port:protocol:method:obfs:base64pass/?obfsparam=base64param&protoparam=base64param&remarks=base64remarks&group=base64group&udpport=0&uot=0)
我用|cat:
将两个字符串合为一个字符串:
{$link=$value[1]|trim|cat:":"|cat:$info['port']|cat:":"|cat:$info['protocol']|cat:":"|cat:$info['obfs']|cat:":"}
但它不能做这样的事情:
{$link=$link|:cat(base str="some_string_to_be_encode")}
我该怎么做?
试试这些方法
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));
}
方法二
$encoded = urlencode( base64_encode( $str ) );
$decoded = base64_decode( urldecode( $encoded ) );
下面是有效的 base64 字符。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
已编辑:-
您可以在点赞之前将输出分配给一个聪明的变量
$smarty->assign('yourVarforsmarty', you_custom_function_name($url));
并且比在 smarty 模板中使用简单
{$yourVarforsmarty}
或
您还可以在 PHP 中创建 $smarty class 的地方创建修饰符:
$smarty->registerPlugin("modifier",'base64url_encode', 'base64url_decode');
然后在TPL中调用它:
{$string_to_encode|base64url_encode}
如何在smarty中进行urlsafe_base64编码? 我做了一个这样的函数:
function smarty_function_base($args, &$smarty){
$data = base64_encode($args['str']);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
它有效,但我想做这样的事情:
base64(host:port:protocol:method:obfs:base64pass/?obfsparam=base64param&protoparam=base64param&remarks=base64remarks&group=base64group&udpport=0&uot=0)
我用|cat:
将两个字符串合为一个字符串:
{$link=$value[1]|trim|cat:":"|cat:$info['port']|cat:":"|cat:$info['protocol']|cat:":"|cat:$info['obfs']|cat:":"}
但它不能做这样的事情:
{$link=$link|:cat(base str="some_string_to_be_encode")}
我该怎么做?
试试这些方法
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));
}
方法二
$encoded = urlencode( base64_encode( $str ) );
$decoded = base64_decode( urldecode( $encoded ) );
下面是有效的 base64 字符。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
已编辑:-
您可以在点赞之前将输出分配给一个聪明的变量
$smarty->assign('yourVarforsmarty', you_custom_function_name($url));
并且比在 smarty 模板中使用简单
{$yourVarforsmarty}
或
您还可以在 PHP 中创建 $smarty class 的地方创建修饰符:
$smarty->registerPlugin("modifier",'base64url_encode', 'base64url_decode');
然后在TPL中调用它:
{$string_to_encode|base64url_encode}