Base64 decode: примеры (PHP)
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().
Декодируют URL-кодированные строки. Применяются для декодирования данных, переданных через URL, а не для формата Base64.
Конвертируют бинарные данные в шестнадцатеричное представление и обратно. Могут служить альтернативой для представления бинарных данных в текстовом виде, но формат отличается от Base64.
Типичные ошибки
$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 Base64 может содержать символы + и /
// Их можно заменить на - и _ соответственно для URL-безопасности
$urlSafe = str_replace(['-', '_'], ['+', '/'], 'SGVsbG8tV29ybGQh');
echo base64_decode($urlSafe);Hello World!
$jsonEncoded = 'eyJtZXNzYWdlIjoiSGVsbG8gV29ybGQhIn0=';
$decoded = base64_decode($jsonEncoded);
$data = json_decode($decoded, true);
print_r($data);Array
(
[message] => Hello World!
)$lines = [
'U29tZSBkYXRh',
'QW5vdGhlciBsaW5l',
'VGhpcmQgbGluZQ=='
];
foreach ($lines as $line) {
echo base64_decode($line) . PHP_EOL;
}Some data Another line Third line
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!'
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 реализует функции как часть языка запросов.