Stone大叔💯 随机生成各种字符串也可以生成中文姓名哦

php随机生成各种字符串也可以生成中文姓名哦

 

/**
 * Stone大叔💯 随机生成email或者手机号码函数
 * ============================================================================
 * ----------------------------------------------------------------------------
 * <><><><><><><><><><><><><>有妹子加微信不哦!~<><><><><><><><><><><><><><><><>
 * ----------------------------------------------------------------------------
 * ============================================================================
 * $Author: Stone大叔💯 $
 * 2010-03-25 06:35:46Z Stone大叔💯 $
*/
class RandChar{

    private $server  =   array(
            'mobile'=>array(
                'front_attached' => array(130,131,132,133,134,135,136,137,138,139,147,150,189,189),
                'later_attached'        =>    '1234567890',
                'str_len'    =>    8                
            ),
            'email'=>array(
                'later_attached' => array('@163.com','@126.com','@tom.com','@qq.com','@sina.com','@sina.com.cn'),
                'front_attached'        =>    'abcdefghijklmnopqrstuvwxyz_0987654321',                
                'min'    =>    5,
                'max'    =>    15
            ),
            'name'=>array(
                'front_attached' => array('赵','钱','孙','李','周','吴','郑','王','冯','陈','楮','卫','蒋','沈','韩','杨朱','秦','尤','许','何','吕','施','张孔','曹','严','华','金','魏','陶','姜','戚','谢','邹','喻','柏','水','窦','章','云','苏','潘','葛','奚','范','彭','郎','鲁','韦','昌','马','苗','凤','花','方','俞','任','袁','柳','酆','鲍','史','唐','费','廉','岑','薛','雷','贺','倪','汤','滕','殷','罗','毕','郝','邬','安','常','乐','于','时','傅','皮','卞','齐','康','伍','余','元','卜','顾','孟','平','黄','和','穆','萧','尹','姚','邵','湛','汪','祁','毛','禹','狄','米','贝','明','臧','计','伏','成','戴','谈','宋','茅','庞','熊','纪','舒','屈','项','祝','董','梁','杜','阮','蓝','闽','席','季','麻','强','贾','路','娄','危','江','童','颜','郭','梅','盛','林','***','锺','徐','丘','骆','高','夏','蔡','田','樊','胡','凌','霍','虞','万','支','柯','昝','管','卢','莫','经','房','裘','缪','干','解','应','宗','丁','宣','贲','邓','郁','单','杭','洪','包','诸','左','石','崔','吉','钮','龚','程','嵇','邢','滑','裴','陆','荣','翁','荀','羊','於','惠','甄','麹','家','封','芮','羿','储','靳','汲','邴','糜','松','井','段','富','巫','乌','焦','巴','弓','牧','隗','山','谷','车','侯','宓','蓬','全','郗','班','仰','秋','仲','伊','宫','宁','仇','栾','暴','甘','斜','厉','戎','祖','武','符','刘','景','詹','束','龙','叶','幸','司','韶','郜','黎','蓟','薄','印','宿','白','怀','蒲','邰','从','鄂','索','咸','籍','赖','卓','蔺','屠','蒙','池','乔','阴','郁','胥','能','苍','双','闻','莘','党','翟','谭','贡','劳','逄','姬','申','扶','堵','冉','宰','郦','雍','郤','璩','桑','桂','濮','牛','寿','通','边','扈','燕','冀','郏','浦','尚','农','温','别','庄','晏','柴','瞿','阎','充','慕','连','茹','习','宦','艾','鱼','容','向','古','易','慎','戈','廖','庾','终','暨','居','衡','步','都','耿','满','弘','匡','国','文','寇','广','禄','阙','东','欧','殳','沃','利','蔚','越','夔','隆','师','巩','厍','聂','晁','勾','敖','融','冷','訾','辛','阚','那','简','饶','空','曾','毋','沙','乜','养','鞠','须','丰','巢','关','蒯','相','查','后','荆','红','游','竺','权','逑','盖','益','桓','公','万俟','司马','上官','欧阳','夏侯','诸葛','闻人','东方','赫连','皇甫','尉迟','公羊','澹台','公冶','宗政','濮阳','淳于','单于','太叔','申屠','公孙','仲孙','轩辕','令狐','锺离','宇文','长孙','慕容','鲜于','闾丘','司徒','司空','丌官','司寇','仉','督','子车','颛孙','端木','巫马','公西','漆雕','乐正','壤驷','公良','拓拔','夹谷','宰父','谷梁','晋','楚','阎','法','汝','鄢','涂','钦','段干','百里','东郭','南门','呼延','归','海','羊舌','微生','岳','帅','缑','亢','况','后','有','琴','梁丘','左丘','东门','西门','商','牟','佘','佴','伯','赏','南宫','墨','哈','谯','笪','年','爱','阳','佟'),
                'later_attached'    => array('白','静','心','德','波','超','二蛋'),
            )
        );

    
    private $check_data    =    array(
        'front_attached'    =>    null,
        'later_attached'    =>    null,
        'str_len'            =>    0,
        'min'                =>    0,
        'max'                =>    0
        );
    private    $character    =    'utf-8';    
    private $type        =    null;

    public function __construct($type = false,$character = 'utf-8'){
        $this->character    =    $character;
        if($type === false ){
            $type =   array_rand($this->server);            
        }    
        $this->type    =    $type;
        $this->check_data();        
    }
    /**
     * 随机生成字符串。
     *
     * @access  public
     * @param   string      $type    字符串类型
     * @return  string        $rand_name    生成的字符串
     */
    public function check_rand_str(){
        $rand_name  =   '';    
        
        
        //检查数据 可要可不要。
        $this->check_data($this->type);

        $front_attached    =    $this->server[$this->type]['front_attached'];
        $later_attached    =    $this->server[$this->type]['later_attached'];

        $rand_name    =    $this->rand_rand_str($front_attached) . $this->rand_rand_str($later_attached);

        return $rand_name;     
    }

    /**
     * 删除附加字符
     *
     * @access  public
     * @param   string      $type    前面还是后面
     * @param   string      $name    所属类型
     * @param   string      $value    值
     * @return  bool
     */
    public function del_attached($type , $value = false){
        
        if(!in_array($type , array('later_attached' , 'front_attached'))){
              return false;
        }

        if(!array_key_exists($this->type , $this->server)){
            return false;
        }

        $attached    =    $this->server[$this->type][$type];

        if(is_array($value) && !empty($value)){

            foreach($value as $key=>$val){
                if(in_array($val , $attached)){
                    unset($attached[$key]);
                }
            }
        }elseif(is_string($value) || is_int($value)){            
                if( ($key    =    array_search($value , $attached)) !== false ){                    
                    unset($attached[$key]);
                }
        }elseif ($value    ===    false){
            $attached    =    array();
        }else{
            return false;
        }    
        $this->server[$this->type][$type] = $attached;

        return true;
    }

    /**
     * 添加附加字符
     *
     * @access  public
     * @param   string      $type    前面还是后面
     * @param   string      $name    所属类型
     * @param   string      $value    值
     * @return  bool
     */
    public function add_attached($type , $value){
        
        if(!in_array($type , array('later_attached' , 'front_attached'))){
              return false;
        }
        
        if(!array_key_exists($this->type , $this->server)){
            $this->server[$this->type]    =    array();
            $this->server[$this->type][$type]    =    array();
        }
        
        $attached    =    $this->server[$this->type][$type];
        
        if(is_array($attached) && is_string($value)){
            $value    =    array($value);
        }elseif(is_string($attached) && is_array($value)){
            $value    =    implode('',$value);
        }elseif(is_null($attached)){
            $this->server[$this->type][$type]    =    $value;
            //$this->server[$this->type][$type]    =    $attached;    
            return true;
        }


        if(is_array($value)){
            //合并之后再删除 
            $attached    =    array_merge($attached , $value);    
            $attached    =    array_unique($attached);
        }elseif(is_string($value) || is_int($value)){
            $attached    .=    $value;
        }else{
            return false;
        }        
        print_r($attached);
        $this->server[$this->type][$type]    =    $attached;    
        return true;
        
    }
    
    /**
     * 检查数据是否有错误,并加以补齐
     *
     * @access  private
     * @param   string      $type    所属类型
     * @return  bool
     */
    private function check_data(){
        $type    =    $this->type;
        if(!array_key_exists($type , $this->server)){
            $this->server[$type]    =    array();    
        }    

        $server_type    =    $this->server[$type];
        foreach($this->check_data as $key=>$val){
            
            if(!array_key_exists( $key , $server_type))
            {
                $server_type[$key]    =    $val;
                
            }
        }
        //print_r($server_type);
        $this->server[$type]    =    $server_type;
    }

    /**
     * 随机生成字符串
     *
     * @access  private
     * @param   string      $str    字符串
     * @param   int      $len    长度
     * @return  bool
     */
    private function rand_rand_str($data , $len = 0){
        $rand_str   =   '';

        if(is_string($data)){
            $str_len    =   mb_strlen($data,$this->character);
            if($len === 0){                
                $len    =    $this->server[$this->type]['str_len'] > 0 ?   $this->server[$this->type]['str_len'] :  rand($this->server[$this->type]['min'] , $this->server[$this->type]['max']);            
            }            
            for($i = 0; $i < $len; $i++){
                $rand_str   .=  mb_substr($data , rand(0,$str_len-1) , 1 , $this->character);                 
            }

        }else if(is_array($data)){
            $rand_str    =    $data[array_rand($data)];
        }
        return $rand_str;
    }
    
}

$rc    =    new RandChar('gril');
$rc->add_attached('front_attached' , array('罗'));
$rc->add_attached('later_attached' , array('羡','资','水','牛'));
echo $rc->check_rand_str();

 

posted on 2014-07-26 15:03  luffy丶zhao  阅读(228)  评论(0编辑  收藏  举报