分类: 系统运维
2012-04-09 13:10:59
/**
* 生成随机码类
* @author 陆旭
* @version 1.0
* @date
2012-03-31
*/
class RandCode {
// 数字类型随机码
const
NUM = 0;
// 数字加小写字母类型随机码
const NUM_LOWERCASE =
1;
// 数字加字母类型随机码
const NUM_LETTER =
2;
// 随机码长度
private $length = 0;
//
随机码类型
private $type = 0;
// 存放随机码数组
private
$letters = array();
// 排除的码
private $except =
array();
/**
* 填充随机码方法
* @return
void
*/
private function
fillLetters()
{
//
填充0-9范围的数字
$this->letters[self::NUM] = range(0,
9);
//
用0-9范围的数组合并a-z范围的数组
$this->letters[self::NUM_LOWERCASE] =
array_merge($this->letters[self::NUM], range('a',
'z'));
//
用0-9a-z范围的数组合并A-Z范围的数组
$this->letters[self::NUM_LETTER] =
array_merge($this->letters[self::NUM_LOWERCASE], range('A',
'Z'));
}
/**
* 构造方法
* @param
int $type 随机码类型
* @param int $length 随机码长度
* @param
array $except 排除的字符和数字,用array约束类型
* @return void
*/
public function __construct($type = self::NUM, $length =
5,array $except = array())
{
$this->type =
intval($type);
$this->length =
intval($length);
$this->except =
$except;
$this->fillLetters();
}
/**
* 返回随机码方法
* @return string
*/
public function
getString()
{
return substr(str_shuffle(join('',
array_diff($this->letters[$this->type], $this->except))), 0,
$this->length);
}
public function
__toString()
{
return
$this->getString();
}
}
$code = new
RandCode(RandCode::NUM_LETTER, 5, array(1,2,8,0,'l','z'));
echo
$code;
原文地址: