【问题标题】:PHP decode a base64 encoded string which is url safePHP 解码一个 url 安全的 base64 编码字符串
【发布时间】:2020-09-01 04:52:57
【问题描述】:

我需要解码一个 base64 编码的字符串。

我需要使用 PHP

base64_decode() 不能胜任。

我试过了:

base64_decode(strtr($data, '-_,', '+/='));

...它只在某些时候有效。

同样的情况发生在:

base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));

我真的不知道如何解决这个问题。

更新

数据来自attached file via GMAIL API

我将它保存到数据库中,utf8mb4 TEXT 字段。

我在插入之前会mysqli -> real_escape_string()

然后我将其从数据库中提取为 $data

【问题讨论】:

  • 如果它不适用于base64_decode(),那么它可能不是 base64 编码的字符串。它可能已通过管道损坏。你能举个例子和你的预期输出吗?
  • @ishegg 我用更多信息更新了这个问题。
  • 我明白了。您无法提供 bas64 编码字符串的示例吗?否则很难在黑暗中帮助你。
  • In the docs 它说的是a base64url encoded,所以如果你可以在字符串中看到%3D,你只需要$attch = base64_decode(urldecode($in))就可以了。
  • @LawrenceCherone 谢谢,我也试过了。但它也没有工作。 (另外,字符串中没有%3D

标签: php base64 decoding


【解决方案1】:

不确定这是否仍然需要,但我有一个 base64 编码的字符串,它本身是 url 编码的 HTML。所以我的答案是在base64_decode()之后urldecode()

这意味着将函数向后包装:

$html = urldecode(base64_decode($data))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多