/firstrend/src/core/class/string.class.php
PHP | 234 lines | 133 code | 10 blank | 91 comment | 12 complexity | bfc4c99ef2f84d44f29ca6a9d3437af6 MD5 | raw file
Possible License(s): Apache-2.0, AGPL-1.0, GPL-2.0, GPL-3.0, LGPL-2.1
- <?php
-
- class string {
-
- /**
- +----------------------------------------------------------
- * ??UUID ????
- +----------------------------------------------------------
- * @access public
- +----------------------------------------------------------
- * @return string
- +----------------------------------------------------------
- */
- static public function uuid()
- {
- $charid = md5(uniqid(mt_rand(), true));
- $hyphen = chr(45);// "-"
- $uuid = chr(123)// "{"
- .substr($charid, 0, 8).$hyphen
- .substr($charid, 8, 4).$hyphen
- .substr($charid,12, 4).$hyphen
- .substr($charid,16, 4).$hyphen
- .substr($charid,20,12)
- .chr(125);// "}"
- return $uuid;
- }
-
- /**
- +----------------------------------------------------------
- * ??Guid??
- +----------------------------------------------------------
- * @return Boolean
- +----------------------------------------------------------
- */
- static public function keyGen() {
- return str_replace('-','',substr(com_create_guid(),1,-1));
- }
-
- /**
- +----------------------------------------------------------
- * ????????UTF8??
- +----------------------------------------------------------
- * @param string $string ???
- +----------------------------------------------------------
- * @return Boolean
- +----------------------------------------------------------
- */
- static public function is_utf8($string)
- {
- return preg_match('%^(?:
- [\x09\x0A\x0D\x20-\x7E] # ASCII
- | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
- | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
- | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
- | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
- | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
- | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
- | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
- )*$%xs', $string);
- }
-
- /**
- +----------------------------------------------------------
- * ???????????????
- +----------------------------------------------------------
- * @static
- * @access public
- +----------------------------------------------------------
- * @param string $str ????????
- * @param string $start ????
- * @param string $length ????
- * @param string $charset ????
- * @param string $suffix ??????
- +----------------------------------------------------------
- * @return string
- +----------------------------------------------------------
- */
- static public function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
- {
- if(function_exists("mb_substr"))
- return mb_substr($str, $start, $length, $charset);
- elseif(function_exists('iconv_substr')) {
- return iconv_substr($str,$start,$length,$charset);
- }
- $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
- $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
- $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
- $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
- preg_match_all($re[$charset], $str, $match);
- $slice = join("",array_slice($match[0], $start, $length));
- if($suffix) return $slice."
";
- return $slice;
- }
-
- /**
- +----------------------------------------------------------
- * ????????????????
- * ????6? ??????? ????
- +----------------------------------------------------------
- * @param string $len ??
- * @param string $type ????
- * 0 ?? 1 ?? ?? ??
- * @param string $addChars ????
- +----------------------------------------------------------
- * @return string
- +----------------------------------------------------------
- */
- static public function rand_string($len=6,$type='',$addChars='') {
- $str ='';
- switch($type) {
- case 0:
- $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.$addChars;
- break;
- case 1:
- $chars= str_repeat('0123456789',3);
- break;
- case 2:
- $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ'.$addChars;
- break;
- case 3:
- $chars='abcdefghijklmnopqrstuvwxyz'.$addChars;
- break;
- case 4:
- $chars = "????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????".$addChars;
- break;
- default :
- // ????????????oOLl???01???????addChars??
- $chars='ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'.$addChars;
- break;
- }
- if($len>10 ) {//?????????????
- $chars= $type==1? str_repeat($chars,$len) : str_repeat($chars,5);
- }
- if($type!=4) {
- $chars = str_shuffle($chars);
- $str = substr($chars,0,$len);
- }else{
- // ?????
- for($i=0;$i<$len;$i++){
- $str.= self::msubstr($chars, floor(mt_rand(0,mb_strlen($chars,'utf-8')-1)),1);
- }
- }
- return $str;
- }
-
- /**
- +----------------------------------------------------------
- * ????????????????
- +----------------------------------------------------------
- * @param integer $number ??
- * @param string $len ??
- * @param string $type ????
- * 0 ?? 1 ?? ?? ??
- +----------------------------------------------------------
- * @return string
- +----------------------------------------------------------
- */
- static public function build_count_rand ($number,$length=4,$mode=1) {
- if($mode==1 && $length<strlen($number) ) {
- //???????????????
- return false;
- }
- $rand = array();
- for($i=0; $i<$number; $i++) {
- $rand[] = rand_string($length,$mode);
- }
- $unqiue = array_unique($rand);
- if(count($unqiue)==count($rand)) {
- return $rand;
- }
- $count = count($rand)-count($unqiue);
- for($i=0; $i<$count*3; $i++) {
- $rand[] = rand_string($length,$mode);
- }
- $rand = array_slice(array_unique ($rand),0,$number);
- return $rand;
- }
-
- /**
- +----------------------------------------------------------
- * ????????? ??????
- * ???????
- +----------------------------------------------------------
- * @param string $format ????
- * # ???? * ??????? $ ????
- * @param integer $number ????
- +----------------------------------------------------------
- * @return string | array
- +----------------------------------------------------------
- */
- static public function build_format_rand($format,$number=1)
- {
- $str = array();
- $length = strlen($format);
- for($j=0; $j<$number; $j++) {
- $strtemp = '';
- for($i=0; $i<$length; $i++) {
- $char = substr($format,$i,1);
- switch($char){
- case "*"://???????
- $strtemp .= string::rand_string(1);
- break;
- case "#"://??
- $strtemp .= string::rand_string(1,1);
- break;
- case "$"://????
- $strtemp .= string::rand_string(1,2);
- break;
- default://????????
- $strtemp .= $char;
- break;
- }
- }
- $str[] = $strtemp;
- }
-
- return $number==1? $strtemp : $str ;
- }
-
- /**
- +----------------------------------------------------------
- * ???????????? ??????
- +----------------------------------------------------------
- * @param integer $min ???
- * @param integer $max ???
- +----------------------------------------------------------
- * @return string
- +----------------------------------------------------------
- */
- static public function rand_number ($min, $max) {
- return sprintf("%0".strlen($max)."d", mt_rand($min,$max));
- }
- }
- ?>