【问题标题】:How to parser Json result from base64_encode() in PHP如何在 PHP 中解析 base64_encode() 的 Json 结果
【发布时间】:2019-12-10 23:51:53
【问题描述】:

我编写了一个 php 脚本来使用 base64_decode() 函数解码一个值。我想将解析结果存储到不同的变量中。我该如何做到这一点??

 $str = 'eyJ0eXAiO0IjoiNTAwMCIsInZhbGlkaXR5IjoiMzAifQjdubnmGHANidodnd';
 $msisdn_64 = base64_decode($msisdn);
 print_r($msisdn_64);

注意:为了隐私起见,$str 变量包含虚拟值,而且这不使用令牌来解码

上面的代码输出:

{"typ":"JWT","alg":"HS256"}{"sub":"456564685455","service":"000","created":20010809,"account_name":"Acct" ,"iss":"Acft","exp":false,"amount":"000","validity":"30"}}�.'���A˕X=·&|�L�0� “����

我尝试了类似 $msisdn[1]->sub$msisdn[0]->sub$msisdn->sub 到第二个对象中的值,但它不起作用。请帮忙

【问题讨论】:

  • 问题是它实际上是一个base64编码的字符串......使用base64格式解码它并将其中的数据解析为不同的变量
  • $msisdn_64 不包含有效的 JSON。看起来不仅两个或多个 JSON 对象被混合在一起,而且还有尾随的二进制垃圾。没有开箱即用的方法可以正确解析。
  • 所以我要解决这个问题

标签: php arrays json laravel base64


【解决方案1】:

可以使用json_decode函数

https://www.php.net/manual/en/function.json-decode.php

例子:

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>

【讨论】:

  • 请进行Base64解码.....指定的格式是使用JWT库的base64。
  • @Andre 然后使用 JWT 库来解析这个...?!
  • 请推荐一个
  • 这里不推荐第三方软件。
  • 你从地狱中救了我的命 :))
【解决方案2】:
$str = 'eyJ0eXAiO0IjoiNTAwMCIsInZhbGlkaXR5IjoiMzAifQjdubnmGHANidodnd';
$msisdn_64 = base64_decode($msisdn);
print_r($msisdn_64);

这里你需要像下面这样再次解码字符串。

$str = 'eyJ0eXAiO0IjoiNTAwMCIsInZhbGlkaXR5IjoiMzAifQjdubnmGHANidodnd';
$msisdn_64 = json_decode(base64_decode($msisdn),true);
print_r($msisdn_64);

记得将参数true放在json_decode()方法中,因为它以关联数组的形式返回结果。

【讨论】:

    猜你喜欢
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2017-11-18
    相关资源
    最近更新 更多