Class List
- App\Middleware\Cors
- App\Middleware\Auth
- App\Middleware\Env
- AppMin
- Application
- Route
- Data\Database
- Data\Db2Database
- Data\OdbcDatabase
- Data\Validator
- Data\KeyValue\SqliteStorage
- Data\Log\FileLogger
- Data\Log\HtmlLogger
- Encoding\Base64Url
- Encoding\Json
- Encoding\Utf8
- Environment\DotEnv
- Environment\System
- FileSystem\Search
- FileSystem\Security
- FileSystem\Sync
- Lang\I18N
- Lang\L10N
- Lang\Time
- Media\Image
- Net\Config
- Net\Email
- Net\HttpClient
- Net\HttpResponse
- Net\IP
- Net\SmtpClient
- Security\Crypto
- Security\Password
- Security\Crypto\Encryption
- Security\Crypto\FileEncryption
- Security\Crypto\JWT
- Security\Crypto\PublicKey
- Security\Crypto\Random
- Security\Crypto\SignedData
- Security\Web\CsrfSession
- Security\Web\CsrfStateless
- Security\Web\RateLimit
- Web\Request
- Web\Response
FastSitePHP\Encoding\Base64Url
Base64-URL Safe Encoding
PHP has built-in support for Base64 Encoding but not Base64-URL encoding. This class encodes and decodes Base64-URL safe strings.
The difference between Base64 and Base64-URL is that Base64-URL uses '-_' characters instead of '+/' and doesn't include '=' padding.
Source Code
Related Links
- https://en.wikipedia.org/wiki/Base64
- https://tools.ietf.org/html/rfc4648#section-5
- https://tools.ietf.org/html/rfc7515#appendix-C
Example Code
PHP Syntax - Encoding - JSON, Base64, Base64-URL
// Create a Basic Object and Array for Encoding
$object = new \stdClass;
$object->string = 'Test';
$object->number = 123;
$object->bool = true;
$array = [
'string' => 'Test',
'number' => 123,
'bool' => true,
];
// -------------------------------------------
// Encode and Decode JSON
// -------------------------------------------
// Since PHP Array's are used like a Dictionary or Hash, both examples print:
// {"string":"Test","number":123,"bool":true}
$json = json_encode($object);
echo $json;
echo "\n";
$json = json_encode($array);
echo $json;
echo "\n\n";
// Use the 2nd Parameter for formatted JSON
$json = json_encode($object, JSON_PRETTY_PRINT);
echo $json;
echo "\n";
// Decode and print the object with details using [print_r()]:
$decoded = json_decode($json);
print_r($decoded);
echo "\n";
// By default objects are decoded as [stdClass] objects. To return an array
// instead pass [true] as the 2nd parameter.
$decoded = json_decode($json, true);
print_r($decoded);
echo "\n";
// If there is an error decoding JSON data [null] will be returned.
// If you need to handle invalid JSON you can do so like this:
if ($decoded === null && json_last_error() !== JSON_ERROR_NONE) {
throw new \Exception('Error decoding JSON Data: ' . json_last_error_msg());
}
// FastSitePHP includes a JSON helper class which throws exceptions on
// JSON errors instead of the default behavior of returning [false] or [null].
$json = \FastSitePHP\Encoding\Json::encode($object);
$decoded = \FastSitePHP\Encoding\Json::decode($json);
// Often though in most code simply calling [json_encode()] or [json_decode()]
// will be enough. By default, PHP decodes large numbers as floats. If you
// want stricter decoding so they come in strings, then you can use additional
// options. This is how FastSitePHP's JSON class decodes as it is used in the
// JWT, Encryption, and SignedData classes. [JSON_BIGINT_AS_STRING] is not
// avaiable on PHP 5.3 so FastSitePHP uses compatible code.
$decoded = json_decode($json, true, 512, JSON_BIGINT_AS_STRING);
// -------------------------------------------
// Encode and Decode Base64
// -------------------------------------------
// Prints: "VGhpcyBpcyBhIHRlc3Q="
$data = 'This is a test';
$base64 = base64_encode($data);
echo $base64;
echo "\n";
// When decoding if there is an error then [false] is returned
$decoded = base64_decode($base64);
print_r($decoded);
echo "\n\n";
// -------------------------------------------
// Encode and Decode Base64-URL Format
// -------------------------------------------
// PHP does not include built-in functions for Base64-URL format so
// FastSitePHP includes a helper class with static methods. They behave
// similar to the built-in functions [base64_encode()] and [base64_decode()]
// so if there is an error then [false] is returned.
$base64url = \FastSitePHP\Encoding\Base64Url::encode($data);
echo $base64;
echo "\n";
$decoded = \FastSitePHP\Encoding\Base64Url::decode($base64url);
print_r($decoded);
echo "\n";
Methods
encode($data)
Static Function
Encode a string as Base64-URL
Returns: string
decode($data)
Static Function
Decode Base64-URL to a string. Returns the decoded data or false on failure. The returned data may be binary. This uses the same behavior as calling the PHP built-in function [base64_decode()].
Returns: string | false