PHP开发小技巧①⑧—将一个字符串部分字符用*替代隐藏

原创 2018年01月16日 17:01:58

        有时候我们在开发中会遇到这样一种情况,例如:显示手机号我们需要将中间4位遮挡掉,一般使用“*”号代替,或是显示身份证号码是为了保护个人信息也同样需要遮挡掉4位,故可用到下列方式、代码进行实现:

<?php


/**
 +----------------------------------------------------------
 * 将一个字符串部分字符用*替代隐藏
 +----------------------------------------------------------
 * @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);
		}
	}
	if ($type == 0) {
		for ($i = $bengin; $i < ($bengin + $len); $i++) {
			if (isset($array[$i]))
				$array[$i] = "*";
		}
		$string = implode("", $array);
	} else if ($type == 1) {
		$array = array_reverse($array);
		for ($i = $bengin; $i < ($bengin + $len); $i++) {
			if (isset($array[$i]))
				$array[$i] = "*";
		}
		$string = implode("", array_reverse($array));
	} else if ($type == 2) {
		$array = explode($glue, $string);
		$array[0] = hideStr($array[0], $bengin, $len, 1);
		$string = implode($glue, $array);
	} else if ($type == 3) {
		$array = explode($glue, $string);
		$array[1] = hideStr($array[1], $bengin, $len, 0);
		$string = implode($glue, $array);
	} else if ($type == 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);
	}
	return $string;
}


$str = '12345678901';
echo hideStr($str,2,4);


版权声明:转载时请标注http://blog.csdn.net/zhihua_w

PHP 用户名、邮箱、手机账号中间字符串以*隐藏

PHP 用户名、邮箱、手机账号中间字符串以*隐藏
  • df282922334
  • df282922334
  • 2016年02月18日 17:35
  • 504

PHP开发小技巧①⑧—将一个字符串部分字符用*替代隐藏

有时候我们在开发中会遇到这样一种情况,例如:显示手机号我们需要将中间4位遮挡掉,一般使用“*”号代替,或是显示身份证号码是为了保护个人信息也同样需要遮挡掉4位,故可用到下列方式、代码进行实现: ...
  • Zhihua_W
  • Zhihua_W
  • 2018年01月16日 17:01
  • 43

php字符截取之类的

一、中文截取:mb_substr()  mb_substr( $str, $start, $length, $encoding )  $str,需要截断的字符串  $start,截断开始处,起始处...
  • genziisme
  • genziisme
  • 2016年08月08日 17:38
  • 201

PHP函数,返回或替换掉字符的一部分 (去掉首字符或者尾字符用...替代)。

今天在写代码中用到   比如一个串是 $a = "a,b,a,"; 我想把最后的","去掉 $newstr = substr($a,0,strlen($a)-1); 或者取部分字符(以下代码是复...
  • u014050331
  • u014050331
  • 2014年03月12日 16:27
  • 681

android实现在Edittext中把部分字符隐藏

一个Edittext中把部分字符隐藏简单的demo 效果图: 废话不讲了上代码: 主布局 activity_main.xml ...
  • chuyouyinghe
  • chuyouyinghe
  • 2015年07月30日 14:35
  • 609

Lua语言实现:截取给定字符串的部分长度,超出部分用省略号“...”替换

在项目开发过程当中,尤其是游戏开发,当使用lua脚本语言编写客户端程序时,需要给玩家角色名长度做适配。如果玩家角色名的长度很长,超过了给定框,那么就会遮住游戏界面其他地方的图片,效果很难看,这样给玩家...
  • A09211008
  • A09211008
  • 2014年11月15日 16:27
  • 1982

截取指定长度文字,超出部分以特定字符代替

这是在做新闻发布系统时收录的一个简单算法。感觉挺好用的。效果如下(新闻标题):   下面是算法源码: #region 将指定字符串按指定长度进行剪切 /// ...
  • xiaoxian8023
  • xiaoxian8023
  • 2012年02月19日 17:28
  • 2031

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

/**  * 只保留字符串首尾字符,隐藏中间用*代替(两个字符时只显示第一个)  * @param string $user_name 姓名  * @return string 格式化后的姓名 ...
  • yjxommm2005
  • yjxommm2005
  • 2018年01月17日 09:44
  • 50

隐藏超出长度的字符

在页面中显示超长字符会换行,影响页面美观,需要将超出长度的部分隐藏,实现代码如下:       Demo        .title{width:200px;white-space:nowra...
  • zhong1113
  • zhong1113
  • 2013年12月18日 23:24
  • 1587

php截取某二个特殊字符串间的某段字符串

在php开发的过程中,有时候会用到截取某二个特殊字符串间的某个字符串,并对这个字符串做特殊的处理,那么对截取出来的字符串做什么特殊处理我们暂时不管,我们今天先讲php截取某二个特殊字符串间的某个字符串...
  • u011986449
  • u011986449
  • 2014年10月24日 20:14
  • 3629
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP开发小技巧①⑧—将一个字符串部分字符用*替代隐藏
举报原因:
原因补充:

(最多只允许输入30个字)