Как проверить, является ли строка base64 допустимой в PHP - PullRequest
50 голосов
/ 25 ноября 2010

У меня есть строка, и я хочу проверить с помощью PHP, является ли она верным в кодировке base64 или нет.

Ответы [ 15 ]

0 голосов
/ 14 января 2014

Я использую этот подход.Он ожидает, что последние 2 символа будут ==

substr($buff, -2, 1) == '=' && substr($buff, -1, 1) == '=')

Обновление: я закончил тем, что сделал еще одну проверку, если один из приведенных выше не проходит base64_decode ($ buff, true)

0 голосов
/ 02 мая 2013

Старая тема, но я нашел эту функцию, и она работает:

function checkBase64Encoded($encodedString) {
$length = strlen($encodedString);

// Check every character.
for ($i = 0; $i < $length; ++$i) {
$c = $encodedString[$i];
if (
($c < '0' || $c > '9')
&& ($c < 'a' || $c > 'z')
&& ($c < 'A' || $c > 'Z')
&& ($c != '+')
&& ($c != '/')
&& ($c != '=')
) {
// Bad character found.
return false;
}
}
// Only good characters found.
return true;
}
0 голосов
/ 25 ноября 2010

Если данные недопустимы base64, то функция base64_decode ($ string, true) вернет FALSE.

0 голосов
/ 25 ноября 2010

base64_decode () должен возвращать false, если ваши данные в кодировке base64 недействительны.

0 голосов
/ 25 ноября 2010

Вы можете просто отправить строку через base64_decode (с $ strict установленным в TRUE), он вернет FALSE, если ввод неверен.

Вы также можете использовать регулярные выражения, чтобы увидеть, содержит ли строкалюбые символы вне алфавита base64 и проверьте, содержит ли он правильное количество отступов в конце (= символов).Но просто использовать base64_decode гораздо проще, и не должно быть риска, что искаженная строка вызовет какой-либо вред.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...