php怎么弄不重复字符串(PHP中将一个字符串部分字符用星号*替代隐藏的实现代码)
php怎么弄不重复字符串
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码有时候我们在开发中会遇到这样一种情况,例如:显示手机号我们需要将中间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); |
有时候需要考虑中文的替换那么可以参考下面的实现方法
对于字符串某部分使用*号替换的问题:
1.实例:
$username = "linshouyue";
echo substr_replace($username,'****','3','4');
substr_replace()函数
1.1)第一参数为需处理的字符串
1.2)第二参数为使用的替换符号
1.3)第三/四参数为需要替换的字符串位置(从第三个字符开始替换后四位字符)
但是该函数对于英文字符/数字数没有任何问题得,但是一旦遇到汉字就会出现很尴尬的问题,因为汉字与英文字符的字节是不一样的,可以使用一下方法解决:
/** * *替换中文汉字
* @author 月月
*/
function substr_cut($user_name){
$strlen = mb_strlen($user_name, 'utf-8');
$firstStr = mb_substr($user_name, 0, 1, 'utf-8');
$lastStr = mb_substr($user_name, -1, 1, 'utf-8');
return $strlen == 2 ? $firstStr . str_repeat('*', mb_strlen($user_name, 'utf-8') - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;
}
好了,这篇文章就介绍到这了
原文链接:https://blog.csdn.net/zhihua_w/article/details/79076836
- thinkphp5.1修改(ThinkPHP 5.1 跨域配置方法)
- phpstudy详细教程学习(phpstudy的php版本自由修改的方法)
- php对接微信付款(PHP微信支付功能示例)
- php依赖注入和控制反转的区别(php反射学习之依赖注入示例)
- php 策略模式工厂模式区别(PHP设计模式之策略模式原理与用法实例分析)
- php如何发邮件(PHP示例演示发送邮件给某个邮箱)
- php怎么根据字符串长度设置(php常用字符串长度函数strlen与mb_strlen用法实例分析)
- php 静态方法(PHP的静态方法与普通方法用法实例分析)
- php优势和缺点(PHP的介绍以及优势详细分析)
- php如何获取当前日期(php实现获取近几日、月时间示例)
- jqueryajax实现部分刷新(php+jQuery ajax实现的实时刷新显示数据功能示例)
- phpstudy 目录浏览宽度(JspStudy如何设置PHP根目录可编辑)
- php数据判断函数有哪些(PHP判断函数是否被定义的方法)
- 阿里云服务器怎么搭建环境(阿里云服务器快速配置php环境的方法)
- php开发各种问题(解决php extension 加载顺序问题)
- php私有函数怎么调(php intval函数用法总结)
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
- 痴情男神 吴彦祖 与妻子恋爱8年,结婚10年,家庭幸福美满(痴情男神吴彦祖)
- 成功破圈,小牛电动SQi强势开 跨(小牛电动SQi强势开)
热门推荐
- sparksql项目实战(Spark SQL的整体实现逻辑解析)
- python 内存读写(详解python持久化文件读写)
- dede菜单激活状态(DEDE采集大师官方留后门的删除办法)
- dedecms安装配置(浅析织梦dedecms三个最重要的安全设置)
- 如何用jquery进行表单验证(jQuery实现发送验证码控制按钮禁用功能)
- zabbix 容器(zabbix监控docker应用配置)
- reactmap给了key仍然提示错误(react为什么不推荐使用index作为key)
- 在php中遍历数组使用(PHP读取远程txt文档到数组并实现遍历)
- python入门之字符串处理(Python中常用的8种字符串操作方法)
- dedecms分页修改(dedecms 自动审核会员发表的最新文章的修改方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9