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;
}
}