字符串操作类

class StringHelper{
    
    /**
     * iconv转换编码 
     *
     * @param    string $inCharset 原编码
     * @param    string $outCharset 目标编码
     * @param    mixed string or array $data 要转换编码的字符串或者数组
     * @param    bool $ignoreError 是否忽略错误
     * @return    mixed string or array
     */
    public static function iconv($inCharset, $outCharset, $data, $ignoreError = TRUE)
    {
        if (is_array($data))
        {
            foreach ($data as $key => $val)
            {
                $data[$key] = self::iconv($inCharset, $outCharset, $val, $ignoreError);
            }
        }
        else
        {
            if (function_exists('iconv'))
            {
                $data = $ignoreError ? @iconv($inCharset, $outCharset, $data) : iconv($inCharset, $outCharset, $data);
            }
            else if (function_exists('mb_convert_encoding'))
            {
                $data = $ignoreError ? @mb_convert_encoding($data, $outCharset, $inCharset) : mb_convert_encoding($data, $outCharset, $inCharset);
            }
        }
        return $data;
    }
    
    /**
     * Strip Slashes
     *
     * 删除字符串或者数组中由addslashes() 函数添加的反斜杠
     *
     * @param    mixed    string or array
     * @return    mixed    string or array
     */
    public static function stripSlashes($str)
    {
        if (is_array($str))
        {
            foreach ($str as $key => $val)
            {
                $str[$key] = self::stripSlashes($val);
            }
        }
        else
        {
            $str = stripslashes($str);
        }
        return $str;
    }
    
    /**
     * Quotes to Entities
     *
     * 将单引号或者双引号转为实体
     *
     * @param    string $str 要转换的字符串
     * @return    string
     */
    public static function quotesToEntities($str)
    {
        return str_replace(array("\'","\"","'",'"'), array("'",""","'","""), $str);
    }
    
    /**
     * Create a Random String
     *
     * 生成一个随机字符串
     *
     * @param    string    $type 随机字符串类型.  basic, alpha, alunum, numeric, nozero, unique, md5
     * @param    integer    $len 随机字符长度
     * @return    string
     */
    public static function randomString($type = 'alnum', $len = 8)
    {
        switch($type)
        {
            case 'basic'    : 
                return mt_rand();
                break;
            case 'alnum'    :
            case 'numeric'    :
            case 'nozero'    :
            case 'alpha'    :
                switch ($type)
                {
                    case 'alpha'    :    
                        $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                        break;
                    case 'alnum'    :    
                        $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                        break;
                    case 'numeric'    :    
                        $pool = '0123456789';
                        break;
                    case 'nozero'    :    
                        $pool = '123456789';
                        break;
                }
                $str = '';
                for ($i=0; $i < $len; $i++)
                {
                    $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
                }
                return $str;
                break;
            case 'unique'    :
            case 'md5'        :
                return md5(uniqid(mt_rand()));
                break;
        }
    }

    /**
     * 字符串截取,按字节截取
     *
     * @param string $str
     * @param intval length
     * @param string $flow
     * @param string $charset
     *
     * @return string
     */
    public static function cut($str, $length, $flow = '...', $charset = 'UTF-8')
    {
        $length = intval($length);
        $end = strlen($str) > $length ? $flow : '';
        return mb_strcut($str, 0, $length, $charset) . $end;
    }
    
    /**
     * 转换10进制整数为相应进制的结果
     *
     * @param intval $num
     * @param intval $bin
     * @return string
     */
    public static function dectoBin($num, $bin = 10)
    {
        static $arr = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
    
        if ($bin == 10)
        {
            return $num;
        }
        $bytelen = ceil(16 / $bin); //获得如果是$bin进制,一个字节的长度
        $t = '';
        $num = intval($num);
    
        if ($num <= 0)
        {
            return 0;
        }
        while ($num > 0)
        {
            $t = $arr[$num % $bin] . $t;
            $num = floor($num / $bin);
        }
        $tlen = strlen($t);
        if ($tlen % $bytelen != 0)
        {
            $pad_len = $bytelen - $tlen % $bytelen;
            $t = str_pad('', $pad_len, '0', STR_PAD_LEFT) . $t; //不足一个字节长度,自动前面补充0
        }
        return $t;
    }
}

 

posted @ 2013-07-03 17:30  葬神  阅读(174)  评论(0编辑  收藏  举报