使用PHP以星号替换部分内容

使用PHP以星号替换部分内容
在最近的项目中,很多人的手机号码都隐藏在中间,ID号只显示了最后4位的需要。我看到有人用substr_replace功能。我后来也使用了这个函数,但是我在使用它时没有很好地使用它。

1。substr_replace

首先,看看这个函数的语法:

复制代码代码如下:substr_replace(字符串,替换,开始,长度)
参数
描述
字符串
这是必需的,指定要检查的字符串。
置换
这是必需的,指定要插入的字符串。
起点

有必要指定字符串被替换的位置
起始偏移量的正数开始替换
负-开始替换字符串结尾处的起始偏移量。
0 -开始替换字符串中的第一个字符
charlist

可选。需要替换多少字符。
正数替换字符串长度
负数——从字符串的结尾开始替换的字符数。
0 -插入而不是替换
1、当开始和charlist是积极的,他们都很好理解,也非常具有象征意义的人类逻辑。从0开始。根据条件,绿色将被替换。
2。当开始为负,charlist是积极的,它是很好的理解。
三.当开始积极charlist是负面的,我开始第一次明白。
4、当开始为负,charlist是消极的,有一点需要注意:如果开始是负的,长度小于或等于开始,然后长0。坑很容易踩。
5、当charlist是0,它成为插入,不更换,量。
虽然我现在还不能满足我的需要,但我觉得如果将来需要扩展,那就很难发挥了。所以我想我会建立一个,这将是方便的使用在未来。
两。自制星形替换功能
复制代码如下:replacestar($str,美元开始,美元的长度= 0)
前两个参数与上面的参数相同,最后的参数与上面的不同。

1。当开始和长度都是正面的,是substr_replace相同

2。当开始为负,长度为正,表明substr_replace相同
三。资源共享

公共静态函数replacestar($str,美元开始,美元的长度= 0)
{
$ I = 0;
星=;
如果($开始= 0){
如果($长度> 0){
str_len美元= strlen(str);
$ = $长度;
如果($开始> = $ str_len){ / /当下标大于字符串的长度,它不会被取代
$=0;
}
} elseif($长度<0){
str_len美元= strlen(str);
美元= ABS(长);
如果($开始> = $ str_len){ / /当下标大于字符串的长度,因为它是相反的,从最后一个字符开始。
开始= str_len美元1美元;
}
偏移量=起始- $计数+ 1;;起始点偏移量减去下标。
$ =偏移量> = 0 ABS($长度):($开始+ 1);等于或大于0,表示没有多于左,小于0,大于左边,以左开始的长度为起点
$起始= 0 $偏移量$偏移= 0;:从左边或左边的位置开始
{ }人
str_len美元= strlen(str);
$count = $ str_len至开始 / /数计算;代替
}
{ }人
如果($长度> 0){
$ = abs($开始);
计算$偏移量$长度:$偏移= $ = = $长度;大于或等于长度不超过右边
} elseif($长度<0){
str_len美元= strlen(str);
美元=美元str_len + $ / /开始;端部偏移值的计算
偏移量= abs($开始+长度)- 1;计算偏移量,因为所有的负值都加起来了。
美元美元美元开始= str_len偏移; / /起点值计算
$开始= $开始= 0 $开始:0;
$ = $结束- $开始+ 1;
{ }人
str_len美元= strlen(str);
$count = $ str_len +启动+ 1美元; / /计算偏移长度
$起始=0;
}
}

当($ i $计数){
星$ *;
美元+;
}

返回substr_replace($str,美元美元美元的明星,开始计数);
}
不擅长算法,这里显示的是一个非常普通的逻辑,并且没有使用数学公式。

1,如果在这里启动($ = 0),启动大于或等于0,分支小于0。

2。在开始点,我们做三个长度大于0的分支,小于0,等于0。

三.最后,我们计算开始,计数,和明星的字符串替换,并最终计算开始,算是积极的,使用substr_replace代替他们。

四单元测试

公共功能testreplacestar()
{
实际= app_util_string美元::replacestar('123456789 ',3, 2);
美元-> assertEquals(合实际,'123××6789);

实际= app_util_string美元::replacestar('123456789 ',9);
美元-> assertEquals(合实际,'123456789);

实际= app_util_string美元::replacestar('123456789 ',9, 2);
美元-> assertEquals(合实际,'123456789);

实际= app_util_string美元::replacestar('123456789',9,9);
美元-> assertEquals(合实际,*********);

实际= app_util_string美元::replacestar('123456789',9,10);
美元-> assertEquals(合实际,*********);

实际= app_util_string美元::replacestar('123456789',9,11);
美元-> assertEquals(合实际,*********);

实际= app_util_string美元::replacestar('123456789 ',3);
美元-> assertEquals(合实际,'123 ******);

实际= app_util_string美元::replacestar('123456789 ',0);
美元-> assertEquals(合实际,*********);

实际= app_util_string美元::replacestar('123456789 ',0, 2);
美元-> assertEquals(合实际,×3456789);

实际= app_util_string美元::replacestar('123456789',3,3);
美元-> assertEquals(合实际,1×56789);

实际= app_util_string美元::replacestar('123456789',1,5);
美元-> assertEquals(合实际,×3456789);

实际= app_util_string美元::replacestar('123456789',3,3);
美元-> assertEquals(合实际,1×56789);

实际= app_util_string美元::replacestar('123456789 ',3, 2);
美元-> assertEquals(合实际,为123456××9);

实际= app_util_string美元::replacestar('123456789 ',3, 5);
美元-> assertEquals(合实际,为123456 ***);

实际= app_util_string美元::replacestar('123456789 ',1, 2);
美元-> assertEquals(合实际,'12345678 *);

实际= app_util_string美元::replacestar('123456789 ',- 1,- 2);
美元-> assertEquals(合实际,'1234567 * *);

实际= app_util_string美元::replacestar('123456789 ',- 4,- 7);
美元-> assertEquals(合实际,****** 789);

实际= app_util_string美元::replacestar('123456789 ',- 1,- 3);
美元-> assertEquals(合实际,为123456 ***);

实际= app_util_string美元::replacestar('123456789 ',1);
美元-> assertEquals(合实际,*********);

实际= app_util_string美元::replacestar('123456789 ',2);
美元-> assertEquals(合实际,******** 9);

实际= app_util_string美元::replacestar('123456789 ',9);
美元-> assertEquals(合实际,×23456789);

实际= app_util_string美元::replacestar('123456789 ',10);
美元-> assertEquals(合实际,'123456789);

实际= app_util_string美元::replacestar('123456789 ',- 10,- 2);
美元-> assertEquals(合实际,'123456789);
}

以上是本文的全部内容,希望能对大家有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部