初始化仓库
This commit is contained in:
100
common/helpers/StringHelper.php
Normal file
100
common/helpers/StringHelper.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace common\helpers;
|
||||
|
||||
/**
|
||||
* StringHelper
|
||||
*
|
||||
*/
|
||||
class StringHelper extends \yii\helpers\StringHelper{
|
||||
|
||||
/**
|
||||
* 字符串截取,支持中文和其他编码
|
||||
* @param string $str 需要转换的字符串
|
||||
* @param string $start 开始位置
|
||||
* @param string $length 截取长度
|
||||
* @param string $charset 编码格式
|
||||
* @param string $suffix 截断显示字符
|
||||
* @return string
|
||||
*/
|
||||
public static function substr($str, $start=0, $length, $charset="utf-8", $suffix=false) {
|
||||
if(function_exists("mb_substr"))
|
||||
$slice = mb_substr($str, $start, $length, $charset);
|
||||
elseif(function_exists('iconv_substr')) {
|
||||
$slice = iconv_substr($str,$start,$length,$charset);
|
||||
if(false === $slice) {
|
||||
$slice = '';
|
||||
}
|
||||
}else{
|
||||
$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));
|
||||
}
|
||||
return $suffix ? $slice.'...' : $slice;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取随机字符串
|
||||
*
|
||||
* @param $length
|
||||
* @param bool $numeric
|
||||
* @return string
|
||||
*/
|
||||
public static function random($length, $numeric = false)
|
||||
{
|
||||
$seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);
|
||||
$seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
|
||||
|
||||
$hash = '';
|
||||
if (!$numeric) {
|
||||
$hash = chr(rand(1, 26) + rand(0, 1) * 32 + 64);
|
||||
$length--;
|
||||
}
|
||||
|
||||
$max = strlen($seed) - 1;
|
||||
$seed = str_split($seed);
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$hash .= $seed[mt_rand(0, $max)];
|
||||
}
|
||||
|
||||
return $hash;
|
||||
}
|
||||
|
||||
/**
|
||||
* 和谐显示
|
||||
* 如:手机号13812345678变成138****5678
|
||||
*
|
||||
* @param $string
|
||||
* @return string
|
||||
*/
|
||||
public static function string_hide_cut($string): string
|
||||
{
|
||||
$length = mb_strlen($string, 'utf-8');
|
||||
if ($length == 0) {
|
||||
return '';
|
||||
}
|
||||
if ($length == 11) {
|
||||
$firstStr = mb_substr($string, 0, 3, 'utf-8');
|
||||
$lastStr1 = mb_substr($string, -4, 1, 'utf-8');
|
||||
$lastStr2 = mb_substr($string, -1, 1, 'utf-8');
|
||||
return $firstStr . '****' . $lastStr1 . '**' . $lastStr2;
|
||||
} elseif ($length < 11 && $length >= 3) {
|
||||
$firstStr = mb_substr($string, 0, 1, 'utf-8');
|
||||
$lastStr = mb_substr($string, -1, 1, 'utf-8');
|
||||
return $firstStr . str_repeat('*', $length - 2) . $lastStr;
|
||||
} elseif ($length == 2) {
|
||||
$firstStr = mb_substr($string, 0, 1, 'utf-8');
|
||||
return $firstStr . '*';
|
||||
} elseif ($length == 1) {
|
||||
return $string . '*';
|
||||
} else {
|
||||
$firstStr = mb_substr($string, 0, 3, 'utf-8');
|
||||
$lastStr = mb_substr($string, -4, 2, 'utf-8');
|
||||
return $firstStr . str_repeat('*', mb_strlen($string, 'utf-8') - 5) . $lastStr . '**';
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user