-
-
Save gwarnants/2048791 to your computer and use it in GitHub Desktop.
<?php | |
/** | |
* @param string $str | |
* @return bool | |
*/ | |
function is_base64($str) | |
{ | |
return (bool)preg_match('`^[a-zA-Z0-9+/]+={0,2}$`', $str); | |
} |
base64_encode("435435") does not return any "=" chars. So this function will not work for some input.
Maybe this better
string(4) "nope"
bool(true)
string(4) "nope" can be base64 decoded ... so it works if you base64 decode and reencode the input and check if they are the same :D
Use this:
if (base64_decode($mystring, true)) {
// is valid
} else {
// not valid
}
Use this:
if (base64_decode($mystring, true)) { // is valid } else { // not valid }
$mystring = 'aaa';
result is true
use this:
<?php
$validB64 = preg_match("/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).base64,.*/", $base64_fille);
Maybe this better
<?php function is_base64($str){ if ( base64_encode(base64_decode($str, true)) === $str){ return true; } else { return false; } }
Thanks bro!!!!
function is_base64($str){
if ( base64_encode(base64_decode($str, true)) === $str){
return true;
} else {
return false;
}
}
is_base64('Matthies') or is_base64('Barthels') return true
this is real name and function fails!!!!
function is_base64($str){ if ( base64_encode(base64_decode($str, true)) === $str){ return true; } else { return false; } }
is_base64('Matthies') or is_base64('Barthels') return true
this is real name and function fails!!!!
@desaikalpesh34 I believe this solve your problem and mine!
private function isBase64Encoded(string $s) : bool
{
if ((bool) preg_match('/^[a-zA-Z0-9\/\r\n+]*={0,2}$/', $s) === false) {
return false;
}
$decoded = base64_decode($s, true);
if ($decoded === false) {
return false;
}
$encoding = mb_detect_encoding($decoded);
if (! in_array($encoding, ['UTF-8', 'ASCII'], true)) {
return false;
}
return $decoded !== false && base64_encode($decoded) === $s;
}
Dude.. i've searched far and wide - and your solution is the only one that "TRULY" works..
Thanks mate!
Glad to help! @colzzky :)
Maybe this better
<?php function is_base64($str){ if ( base64_encode(base64_decode($str, true)) === $str){ return true; } else { return false; } }
Thanks bro!!!!
Perfect
None of the answers worked for me. In my case it was the lack of spaces that I used to tell if it was base64 encoded
$teststring = substr($string,4,100);
$not64 = strpos($teststring," ");
It's not in a function, but it has worked for me. I'm sure people will tell me that it won't always work, but ALL of the functions suggested above returned false for me regardless of the string.
Maybe this better