Base64 decode: примеры (PHP)

Декодирование Base64 в PHP: работа с функцией base64_decode
Раздел: Кодирование/декодирование
base64_decode(string $string, bool $strict = false): string|false

Функция base64_decode() в PHP декодирует строку данных, закодированную в формате Base64. Основное применение — преобразование данных из текстового представления Base64 обратно в исходный бинарный или текстовый формат.

Аргументы функции
  • string $string: Обязательный. Строка в кодировке Base64, которую необходимо декодировать.
  • bool $strict: Необязательный. Если установлен в true, функция возвращает false при обнаружении символов, не входящих в алфавит Base64. По умолчанию false. В PHP 8.0+ этот параметр имеет тип bool, ранее допускался int.

Примеры использования

Базовое декодирование
$encoded = 'SGVsbG8gV29ybGQh';
echo base64_decode($encoded);
Hello World!
Использование строгого режима
$encoded = 'SGVsbG8gV29ybGQh!';
$result = base64_decode($encoded, true);
var_dump($result);
bool(false)
Декодирование бинарных данных
$imageData = base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');
echo strlen($imageData);
42

Похожие функции в PHP

Выполняет обратную операцию — кодирует данные в строку Base64. Используется вместе с base64_decode().

urldecode() / rawurldecode()

Декодируют URL-кодированные строки. Применяются для декодирования данных, переданных через URL, а не для формата Base64.

bin2hex() и hex2bin()

Конвертируют бинарные данные в шестнадцатеричное представление и обратно. Могут служить альтернативой для представления бинарных данных в текстовом виде, но формат отличается от Base64.

Типичные ошибки

Игнорирование возврата false
$data = base64_decode('Некорректная строка!', true);
echo $data; // Выведет пустоту, но может вызвать проблемы
(пустой вывод с предупреждением)

Рекомендуется всегда проверять результат на false.

Неправильная обработка бинарных данных
$decoded = base64_decode($imageBase64);
// Прямой вывод в браузер без заголовков
echo $decoded;

Может привести к выводу «мусора» в браузере. Для изображений нужно отправлять правильный Content-Type.

Пустая входная строка
var_dump(base64_decode(''));
string(0) ""

Функция возвращает пустую строку, что может быть неочевидным.

Изменения в версиях PHP

  • PHP 8.0: Параметр $strict теперь имеет тип bool. Передача значений других типов вызывает предупреждение о несоответствии типа.
  • PHP 7.0: Добавлена возможность вызова функции без второго аргумента.

Расширенные примеры

Декодирование данных URL
Пример php
// Иногда в URL Base64 может содержать символы + и /
// Их можно заменить на - и _ соответственно для URL-безопасности
$urlSafe = str_replace(['-', '_'], ['+', '/'], 'SGVsbG8tV29ybGQh');
echo base64_decode($urlSafe);
Hello World!
Обработка вложенных данных
Пример php
$jsonEncoded = 'eyJtZXNzYWdlIjoiSGVsbG8gV29ybGQhIn0=';
$decoded = base64_decode($jsonEncoded);
$data = json_decode($decoded, true);
print_r($data);
Array
(
    [message] => Hello World!
)
Построчное декодирование файла
Пример php
$lines = [
    'U29tZSBkYXRh',
    'QW5vdGhlciBsaW5l',
    'VGhpcmQgbGluZQ=='
];
foreach ($lines as $line) {
    echo base64_decode($line) . PHP_EOL;
}
Some data
Another line
Third line
Валидация строки Base64
Пример php
function isValidBase64($string) {
    $decoded = base64_decode($string, true);
    return $decoded !== false && base64_encode($decoded) === $string;
}
var_dump(isValidBase64('VGhpcyBpcyB2YWxpZA=='));
var_dump(isValidBase64('Invalid!@#'));
bool(true)
bool(false)

Альтернативы в других языках

Base64 decode в Python

import base64
decoded = base64.b64decode('SGVsbG8gV29ybGQh')
print(decoded)
b'Hello World!'
JavaScript (Node.js)
const decoded = Buffer.from('SGVsbG8gV29ybGQh', 'base64').toString();
console.log(decoded);
Hello World!

Base64 decode в MySQL

SELECT TO_BASE64('Hello') AS encoded, FROM_BASE64('SGVsbG8=') AS decoded;
+----------+---------+
| encoded  | decoded |
+----------+---------+
| SGVsbG8= | Hello   |
+----------+---------+
Отличия

В Python модуль base64 предоставляет более широкий набор функций для работы с различными вариантами Base64. В JavaScript браузерное API использует atob(). MySQL реализует функции как часть языка запросов.

PHP base64_decode function comments

En
Base64 decode Decodes data encoded with MIME base64