<?php // Mascaras binarias define('RANDOM_MAIUSCULAS', 1); // 0001 define('RANDOM_MINUSCULAS', 2); // 0010 define('RANDOM_LETRAS', 3); // 0011 define('RANDOM_NUMEROS', 4); // 0100 define('RANDOM_ALFANUM', 7); // 0111 define('RANDOM_SIMBOLOS', 8); // 1000 define('RANDOM_COMPLETO', 15); // 1111 /** * Gera uma sequencia de simbolos randomicos * @param int $tamanho Tamanho da string retornada * @param int $simbolos Mascara binaria dos tipos de simbolos usados * @return string Sequencia de simbolos randomicos */ function random($tamanho = 10, $simbolos = RANDOM_ALFANUM) { if (!$simbolos) { trigger_error('Simbolos invalido', E_USER_ERROR); return false; } $str = ''; if ($simbolos & RANDOM_MAIUSCULAS) { $str .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; } if ($simbolos & RANDOM_MINUSCULAS) { $str .= 'abcdefghijklmnopqrstuvwxyz'; } if ($simbolos & RANDOM_NUMEROS) { $str .= '0123456789'; } if ($simbolos & RANDOM_SIMBOLOS) { $str .= '?!@#$%&*()[]{}<>_+-=;:,.'; } $str = str_shuffle($str); $ultimo = strlen($str) - 1; $saida = ''; for ($i = abs($tamanho); $i > 0; --$i) { $saida .= $str[mt_rand(0, $ultimo)]; } return $saida; }