A php extension for Hashids
Requirement
- PHP 7 +
Install
$ git clone https://github.com/cdoco/hashids.phpc.git
$ cd hashids.phpc
$ phpize && ./configure && make && make installyou can set some options in php.ini, or set in the constructor. i suggest you in php.ini setting, so you will get better performance.
[hashids]
extension=hashids.so
//default is empty
hashids.salt=cdoco
//default: 0
hashids.min_hash_length=20
//default: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
//you can use to set it according to your own, for example, is set to all lowercase
hashids.alphabet=abcdefghijklmnopqrstuvwxyzQuick Example
$hashids = new Hashids();
$hash = $hashids->encode(1, 2, 3, 4, 5); // ADf9h9i0sQ
$numbers = $hashids->decode($hash); // [1, 2, 3, 4, 5]
//or would you prefer to use a static method call
$hash = Hashids::encode(1, 2, 3, 4, 5); // ADf9h9i0sQ
$numbers = Hashids::decode($hash); // [1, 2, 3, 4, 5]Performance
php extension and only php code performance contrast.
Other
$hashids = new Hashids();
$hash = $hashids->encode(1, 2, 3, 4, 5); // ADf9h9i0sQ
$hash = $hashids->encode([1, 2, 3, 4, 5]); // ADf9h9i0sQconstruct parameter.
new Hashids(string $salt, int $min_hash_length, string $alphabet);
//example
new Hashids("this is salt.", 20, 'abcdefghijklmnopqrstuvwxyz');hex.
$hashids = new Hashids();
$hash = $hashids->encodeHex('FFFFDD'); // rYKPAK
$hex = $hashids->decodeHex($hash); // FFFFDDCurses! #$%@
This code was written with the intent of placing created ids in visible places, like the URL. Therefore, the algorithm tries to avoid generating most common English curse words by generating ids that never have the following letters next to each other:
c, f, h, i, s, t, u
License
PHP License. See the LICENSE file.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.


