3v4l.org

run code in 300+ PHP versions simultaneously
<?php class TokenGenerator { const ALPHABET = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; public function generateToken($length = 16) { $alphabetSize = strlen(self::ALPHABET); $token = ''; while (strlen($token) < $length) { $randomBytes = hash_hmac('sha256', openssl_random_pseudo_bytes(20), mcrypt_create_iv(20, MCRYPT_DEV_URANDOM)); $offset = abs(hexdec(bin2hex(substr($randomBytes, 0, 4)))) % $alphabetSize; $token .= substr(self::ALPHABET, $offset, 1); } return $token; } } $gen = new TokenGenerator(); var_dump($gen->generateToken(10)); var_dump($gen->generateToken(10)); var_dump($gen->generateToken(10)); var_dump($gen->generateToken(20)); var_dump($gen->generateToken(20)); var_dump($gen->generateToken(20));
Output for git.master, git.master_jit, rfc.property-hooks
Fatal error: Uncaught Error: Call to undefined function openssl_random_pseudo_bytes() in /in/Tmbup:13 Stack trace: #0 /in/Tmbup(24): TokenGenerator->generateToken(10) #1 {main} thrown in /in/Tmbup on line 13
Process exited with code 255.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
53.15 ms | 401 KiB | 8 Q