PHP只显示姓名首尾字符,隐藏中间字符并用*替换

一、代码如下:

	/**
     * @desc 只保留字符串首尾字符,隐藏中间用*代替(两个字符时只显示第一个)
     * @param $userName
     * @return string
     *
     * @author ljl 2020-05-27
     */
    public function substrCut($userName)
    {
        $strlen = mb_strlen($userName, 'utf-8');
        $firstStr = mb_substr($userName, 0, 1, 'utf-8');
        $lastStr = mb_substr($userName, -1, 1, 'utf-8');
        $resultName = ($strlen == 2) ? $firstStr . str_repeat('*', mb_strlen($userName, 'utf-8') - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;

        return $resultName;
    }

二、涉及函数

1、mb_strlen — 获取字符串的长度

参数:mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
含义:str:要检查长度的字符串。
encoding:encoding 参数为字符编码。如果省略,则使用内部字符编码。

2、mb_substr — 获取部分字符串

参数:mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
含义:str:从该 string 中提取子字符串。
start:如果 start 不是负数,返回的字符串会从 str 第 start 的位置开始,从 0 开始计数。举个例子,字符串 ‘abcdef’,位置 0 的字符是 ‘a’,位置 2 的字符是 ‘c’,以此类推。如果 start 是负数,返回的字符串是从 str 末尾处第 start 个字符开始的。
length:str 中要使用的最大字符数。如果省略了此参数或者传入了 NULL,则会提取到字符串的尾部。
encoding:encoding 参数为字符编码。如果省略,则使用内部字符编码。

3、str_repeat — 重复一个字符串

参数:str_repeat ( string $input , int $multiplier )
含义:input:待操作的字符串。
multiplier:input 被重复的次数。

你可能感兴趣的:(【01】PHP)