Example #1
0
/**
 +----------------------------------------------------------
* 将一个字符串部分字符用*替代隐藏
 +----------------------------------------------------------
* @param string    $string   待转换的字符串
* @param int       $bengin   起始位置,从0开始计数,当$type=4时,表示左侧保留长度
* @param int       $len      需要转换成*的字符个数,当$type=4时,表示右侧保留长度
* @param int       $type     转换类型:0,从左向右隐藏;1,从右向左隐藏;2,从指定字符位置分割前由右向左隐藏;3,从指定字符位置分割后由左向右隐藏;4,保留首末指定字符串
* @param string    $glue     分割符
 +----------------------------------------------------------
* @return string   处理后的字符串
 +----------------------------------------------------------
*/
function hideStr($string, $bengin = 0, $len = 4, $type = 0, $glue = "@")
{
    if (empty($string)) {
        return false;
    }
    $array = array();
    if ($type == 0 || $type == 1 || $type == 4) {
        $strlen = $length = mb_strlen($string);
        while ($strlen) {
            $array[] = mb_substr($string, 0, 1, "utf8");
            $string = mb_substr($string, 1, $strlen, "utf8");
            $strlen = mb_strlen($string);
        }
    }
    switch ($type) {
        case 1:
            $array = array_reverse($array);
            for ($i = $bengin; $i < $bengin + $len; $i++) {
                if (isset($array[$i])) {
                    $array[$i] = "*";
                }
            }
            $string = implode("", array_reverse($array));
            break;
        case 2:
            $array = explode($glue, $string);
            $array[0] = hideStr($array[0], $bengin, $len, 1);
            $string = implode($glue, $array);
            break;
        case 3:
            $array = explode($glue, $string);
            $array[1] = hideStr($array[1], $bengin, $len, 0);
            $string = implode($glue, $array);
            break;
        case 4:
            $left = $bengin;
            $right = $len;
            $tem = array();
            for ($i = 0; $i < $length - $right; $i++) {
                if (isset($array[$i])) {
                    $tem[] = $i >= $left ? "*" : $array[$i];
                }
            }
            $array = array_chunk(array_reverse($array), $right);
            $array = array_reverse($array[0]);
            for ($i = 0; $i < $right; $i++) {
                $tem[] = $array[$i];
            }
            $string = implode("", $tem);
            break;
        default:
            for ($i = $bengin; $i < $bengin + $len; $i++) {
                if (isset($array[$i])) {
                    $array[$i] = "*";
                }
            }
            $string = implode("", $array);
            break;
    }
    return $string;
}
Example #2
0
 public function info(int $uid)
 {
     $res = $this->relation(true)->find($uid);
     if (empty($res['info'])) {
         $res['info'] = array();
         $model = M('UserInfo');
         $fields = $model->getDbFields();
         foreach ($fields as $v) {
             $res['info'][$v] = "";
         }
     }
     unset($res['info']['id']);
     unset($res['info']['user_id']);
     $data = array('uid' => $res['id'], 'username' => $res['username']);
     $result = array_merge($data, $res['info'], status($res['status'], $this->statusArr));
     if (empty($result['sex'])) {
         $result['sex'] = 0;
     } else {
         $result['sex'] = (int) $result['sex'];
     }
     if (!empty($result['id_number'])) {
         $result['id_number'] = hideStr($result['id_number'], 4, 6, 1);
     }
     if (!empty($result['portrait'])) {
         $result['portrait'] = uri_file($result['portrait']);
     }
     if (!empty($result['photo'])) {
         $result['photo'] = uri_file($result['photo']);
     }
     return $result;
 }