PHP 字符串部分自定义替换星号(姓名、身份证、银行卡、手机、IP等)实例

本文介绍了PHP中使用str_hide函数进行姓名、身份证、银行卡、手机号和IP等敏感信息的自定义星号替换,包括函数实例和具体用法。

1、str_hide 函数实例

echo '<h3>1.姓名/字符串</h3>';
$str = 'PHP 字符串部分自定义替换星号(身份证、手机、姓名、IP等)实例';
echo str_hide($str,3).'<br/>'; // 第3个后的字符全部用*号代替
echo str_hide($str,3,'****').'<br/>'; // 第3个字符后指定用4个****
echo str_hide($str,3,-2,'*').'<br/>'; // 开始3至倒数第2位 中间全部替换*号
echo str_hide($str,3,-2,'****').'<br/>'; // 开始3至倒数第2位 指定填充 4个****

echo '<h3>2.身份证</h3>';
$idcard = '45072220081008821X'; 
echo str_hide($idcard,2).'<br/>'; // 第2个字符后隐藏
echo str_hide($idcard,2,'****').'<br/>'; // 第2个字符后 替换为4个****
echo str_hide($idcard,-4,'****').'<br/>'; // 指定后4位4个****
echo str_hide($idcard,5,8).'<br/>'; // 隐藏身份证中间8位

echo '<h3>3.手机号</h3>';
$mobile = 13800138000;
echo str_hide($mobile,2).'<br/>'; // 第2个字符后隐藏
echo str_hide($mobile,2,'****').'<br/>'; // 第2个字符后方指定用4个****代替
echo str_hide($mobile,2,-3).'<br/>'; // 手机前2位至后3位中间隐藏
echo str_hide($mobile,2,-3,'****').'<br/>'; // 手机前2位至后3位用4个星号代替

echo '<h3>4.银行卡</h3>';
//$bankCard = '6228888888888888123'; 
$bankCard = '6228123456789018123'; 
echo str_hide($bankCard,4).'<br/>'; // 第4个字符串后隐藏
echo str_hide($bankCard,4,'****').'<br/>'; // 第4个字符后 指定替换4个****

$str_hide = str_hide($bankCard,4,-3,'*'); // 前4位至后3位 中间全部替换*号
echo $str_hide.'<br/>'; 

$split_card = implode(' ',str_split($str_hide,4));  // 分割卡号
echo $split_card.'<br/>';
echo str_hide($bankCard,-12,"*").'<br/>'; // 隐藏后12位
echo str_hide($bankCard,-12,"0").'<br/>'; // 后12位设置为0
echo str_hide($bankCard,-12,-5,"*").'<br/>'; // 后12的后5位的中间隐藏

2、str_hide 函数

/*
 @Author Sea <34422611@qq.com> v1.01
 @Param string $str
 @Param int $start 起始位置 从0开始计数  负数倒转替换
 @Param (int or string) $length 当 $length=string 替换 $key
 @Param (int or string) $key 填充的隐藏的字符 默认 *
 @Param string $charset 可废弃 删除 ($key && $charset = $key) 和 ($charset='utf8') 语句;
 
 @Param int $split 可拓展 
 $split_card = implode(' ',str_split($str_hide,4));  // 分割卡号
 */
function str_hide($str,$start,$length=0,$key='',$charset='utf8'){
	// 使用支持补0,当 $length=string 替换 $key
	if(strlen($length) && gettype($length) != "integer"){
		$key && $charset = $key;
		$key = $length;
		$length = 0;
	}
	$Par = $length?[$start,$length]:[$start]; //array_filter([$start,$length]);
	// use $charset;
	//$e or $e = mb_strlen($str);
	//$Par     = [$start,$length,$charset];
	$rep_str = mb_substr($str,...$Par);
	strlen($key) or $key = '*';
	strlen($key) == 1 && $key = str_pad('',mb_strlen($rep_str),$key);
	$start  = strlen(mb_substr($str,0,$start));
	$count  = strlen($rep_str);
	$result = substr_replace($str,$key,$start,$count);
	return $result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值