PHP library for simple secure random string generation (e.g. - passwords / salts)
Created by Chris Kankiewicz (@PHLAK)
- PHP >= 7.2
composer require phlak/strgen
// Import StrGen
use PHLAK\StrGen;
// Initialize the Generator
$generator = new StrGen\Generator();
// Generate a random string of characters
$generator->length(16)->generate(); // Returns something like '8a*Ag@I0*s0v[S3u'
StrGen has a few built-in character sets available for ease of use. You can
specify which set(s) to use by passing a character set or an array of sets to
the charset()
method.
Example using built-in sets:
$generator = new StrGen\Generator();
$generator->charset(StrGen\CharSet::ALPHA_NUMERIC)->generate();
// or
$generator->charset([StrGen\CharSet::MIXED_ALPHA, StrGen\CharSet::NUMERIC])->generate();
Available presets:
Key | Character Set |
---|---|
StrGen\CharSet::LOWER_ALPHA |
abcdefghijklmnopqrstuvwxyz |
StrGen\CharSet::UPPER_ALPHA |
ABCDEFGHIJKLMNOPQRSTUVWXYZ |
StrGen\CharSet::MIXED_ALPHA |
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ |
StrGen\CharSet::NUMERIC |
0123456789 |
StrGen\CharSet::ALPHA_NUMERIC |
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 |
StrGen\CharSet::SPECIAL |
!@#$%^&*()-_=+.?{}[]<>:;/\|~ |
StrGen\CharSet::ALL |
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 !@#$%^&*()-_=+.?{}[]<>:;/\|~ |
Custom sets:
You can also manually define a character set by passing a string of characters
to the charset()
method.
$generator = new StrGen\Generator();
$generator->charset('0123456789abcdef')->generate();
StrGen also has built-in convenience functions for generating strings from the included character sets or a custom character set.
$generator->lowerAlpha($length);
$generator->upperAlpha($length);
$generator->mixedAlpha($length);
$generator->numeric($length);
$generator->alphaNumeric($length);
$generator->special($length);
$generator->all($length);
$generator->custom($length, $charset);
A list of changes can be found on the GitHub Releases page.
For general help and support join our Spectrum community.
Please report bugs to the GitHub Issue Tracker.
This project is licensed under the MIT License.