otpauth:// TOTP /保管箱:myemail@gmail.com秘密= MYSECRETCODE&安培;发行人=收存箱
otpauth://totp/myemail@google.com秘密= MYSECRETCODE
?otpauth://totp/github.com/MyUsername发行者= GitHub的&安培;秘密= MySecret
我需要变量中的密码,电子邮件,发卡行,标签。我用爆炸编码,但不能用第三个编码。有没有简单的方法来使用正则表达式获取信息?
$data = $request['code'];
$remove_rules = substr($data, 15);
$que_exp = explode('?',$remove_rules);
if(array_key_exists(1,$que_exp))
{
if (filter_var($que_exp[0], FILTER_VALIDATE_EMAIL)) {
$email = $que_exp[0];
}
}
$secret_exp = explode('&',$que_exp[1]);
$secret = substr($secret_exp[0], strpos($secret_exp[0], "=") + 1);
if(array_key_exists(1,$secret_exp))
{
$issuer = substr($secret_exp[1], strpos($secret_exp[1], "=") + 1);
}
$label_email = explode(':',$que_exp[0]);
if (!filter_var($label_email[0], FILTER_VALIDATE_EMAIL)) {
if (!filter_var($label_email[1], FILTER_VALIDATE_EMAIL)) {
return 'data error';
}
$email = $label_email[1];
$label = $label_email[0];
}
else
$email = $label_email[0];
if(empty($issuer)) {
if(empty($label))
$issuer = "Account";
else
$issuer = $label;
}
答案 0 :(得分:1)
您可以使用http://php.net/manual/en/function.parse-url.php解析URI,然后使用explode查询键值对解析URI。这比使用正则表达式更正确。
试试这个:
print_r(parse_url('otpauth://totp/github.com/MyUsername?issuer=GitHub&secret=MySecret'));