A PHP QR Code generator based on the implementation by Kazuhiko Arase, namespaced, cleaned up, improved and other stuff. It also features a QR Code reader based on a PHP port of the ZXing library.
Hi! Please check out the v5.0-beta release and leave your feedback in this discussion thread. Thanks!
Attention: there is now also a javascript port: chillerlan/js-qrcode.
- Creation of Model 2 QR Codes, Version 1 to 40
- ECC Levels L/M/Q/H supported
- Mixed mode support (encoding modes can be combined within a QR symbol). Supported modes:
- numeric
- alphanumeric
- 8-bit binary
- 13-bit double-byte kanji (Japanese, Shift-JIS) and hanzi (simplified Chinese, GB2312/GB18030) as defined in GBT18284-2000
- Flexible, easily extensible output modules, built-in support for the following output formats:
- GdImage
- ImageMagick
- Markup types: SVG, HTML, etc.
- String types: JSON, plain text, etc.
- Encapsulated Postscript (EPS)
- PDF via FPDF
- QR Code reader (via GD and ImageMagick)
See the wiki for advanced documentation.
An API documentation created with phpDocumentor can be found at https://chillerlan.github.io/php-qrcode/ (WIP).
The documentation for QROptions
container can be found here: chillerlan/php-settings-container.
- PHP 7.4+
ext-mbstring
- optional:
ext-fileinfo
(required byQRImagick
output)ext-gd
ext-imagick
with ImageMagick installedsetasign/fpdf
for the PDF output module
For the QRCode reader, either ext-gd
or ext-imagick
is required!
requires composer
via terminal:
composer require chillerlan/php-qrcode
via composer.json
:
{
"require": {
"php": "^7.4 || ^8.0",
"chillerlan/php-qrcode": "dev-main#<commit_hash>"
}
}
Note: replace dev-main
with a version constraint, e.g. ^4.3
- see releases for valid versions.
See the installation guide on the wiki for more info!
We want to encode this URI for a mobile authenticator into a QRcode image:
$data = 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net';
// quick and simple:
echo '<img src="'.(new QRCode)->render($data).'" alt="QR Code" />';
Wait, what was that? Please again, slower! See Advanced usage on the wiki. Also, have a look in the examples folder for some more usage examples.
Using the built-in QR Code reader is pretty straight-forward:
$result = (new QRCode)->readFromFile('path/to/file.png'); // -> DecoderResult
// you can now use the result instance...
$content = $result->data;
$matrix = $result->getMatrix(); // -> QRMatrix
// ...or simply cast it to string to get the content:
$content = (string)$result;
It's generally a good idea to wrap the reading in a try/catch block to handle any errors that may occur in the process.
- Drupal:
- Two-factor Authentication
tfa
(Drupal 8+) - Google Authenticator Login
ga_login
(deprecated, Drupal 7)
- Two-factor Authentication
- Symfony
- WordPress:
- WoltLab Suite
- other uses:
- Articles:
- https://www.twilio.com/blog/create-qr-code-in-php (featuring v4.3.x)
Hi, please check out my other projects that are way cooler than qrcodes!
- php-oauth-core - an OAuth 1/2 client library along with a bunch of providers
- php-httpinterface - a PSR-7/15/17/18 implemetation
- php-database - a database client & querybuilder for MySQL, Postgres, SQLite, MSSQL, Firebird
I don't take responsibility for molten CPUs, misled applications, failed log-ins etc.. Use at your own risk!
Parts of this code are ported to PHP from the ZXing project and licensed under the Apache License, Version 2.0.
The word "QR Code" is a registered trademark of DENSO WAVE INCORPORATED
https://www.qrcode.com/en/faq.html#patentH2Title