PHP Conference Japan 2024

base64_decode

(PHP 4, PHP 5, PHP 7, PHP 8)

base64_decode解码使用 MIME base64 编码的数据

描述

base64_decode(字符串 $string, 布尔值 $strict = false): 字符串|false

解码 base64 编码的 字符串

参数

string

编码后的数据。

strict

如果 strict 参数设置为 true,则 base64_decode() 函数如果输入包含 base64 字母表之外的字符,则将返回 false。否则,无效字符将被静默丢弃。

返回值

如果成功则返回解码后的数据,失败则返回 false。返回的数据可能是二进制数据。

范例

示例 #1 base64_decode() 示例

<?php
$str
= 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo
base64_decode($str);
?>

以上示例将输出

This is an encoded string

参见

添加注释

用户贡献的注释 6 条注释

winkelnkemper at googlemail dot com
13 年前
如果您想保存从 Javascript canvas.toDataURL() 函数派生的数据,则必须将空格转换为加号。如果不这样做,解码后的数据将损坏

<?php
$encodedData
= str_replace(' ','+',$encodedData);
$decocedData = base64_decode($encodedData);
?>
martinstaemmler at gmx dot net
15 年前
我在尝试让 base64_decode 解码长度超过 ~5k 个字符的 base64 字符串时遇到了一些麻烦。

base64 解码函数是模 4 和模 3 长度分段字符串之间的同态。这促使了一种分治法:将编码字符串拆分为模 4 个字符的子字符串,然后解码每个子字符串并将它们连接起来。

然后代替

<?php $decoded = base64_decode($encoded); ?>

对于大型 $encoded 字符串,使用以下方法更安全

<?php
$decoded
= "";
for (
$i=0; $i < ceil(strlen($encoded)/256); $i++)
$decoded = $decoded . base64_decode(substr($encoded,$i*256,256));
?>

其中 256 可以替换为足够小的模 4 自然数。
pete panic
10 个月前
请注意,填充字符不限于“=”。字符串末尾任何无法解码的字符都将被解释为填充。如果 $strict 设置为 true,则填充字符当然仅限于 base64 字符。

示例

<?php
// $strict = false;
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo
base64_decode($str); // This is an encoded string

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw';
echo
base64_decode($str); // This is an encoded string

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZwA';
echo
base64_decode($str); // This is an encoded string

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZwA=';
echo
base64_decode($str); // This is an encoded string

// $strict = true;
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo
base64_decode($str, true); // This is an encoded string

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw';
echo
base64_decode($str, true); // This is an encoded string

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZwA';
echo
base64_decode($str, true); // This is an encoded string

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZwA=';
echo
base64_decode($str, true); // This is an encoded string
?>
Tom
17 年前
此函数支持 RFC 4648 第 5 节“使用 URL 和文件名安全字母表的 Base 64 编码”中描述的“base64url”。

<?php
function base64url_decode($base64url)
{
$base64 = strtr($base64url, '-_', '+/');
$plainText = base64_decode($base64);
return (
$plainText);
}
?>
walf
9 年前
用于 URL 参数/文件名的 Base64,符合 RFC 4648。
默认情况下,在编码时删除填充,因为它解码不需要,并且使 URL 免于 % 编码。

<?php
函数 base64url_encode($data, $pad = null) {
$data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
if (!
$pad) {
$data = rtrim($data, '=');
}
return
$data;
}
函数
base64url_decode($data) {
return
base64_decode(str_replace(array('-', '_'), array('+', '/'), $data));
}
user at sfdsfd dot com
5 年前
函数 is_base64($str){
if($str === base64_encode(base64_decode($str))){
return true;
}
return false;
}

---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------

$str = 'VGhpcyBpcyBiYXNlNjQgZW5jb2RlIHN0cmluZw==';

if(is_base64($str)){
print base64_decode($str);
}
To Top