PHP手机号中间四位用星号*代替显示的实例
场景
在显示用户列表的场景中,一般用到手机号的显示时都需要对手机号进行处理,一般是把中间的四位换成星号****,
或电商网站,价格中,第2位会用?号替换
实现方法
<?php
$tel = '12345678910';
//1.字符串截取法
$new_tel1 = substr($tel, 0, 3).'****'.substr($tel, 7);
var_dump($new_tel1);
//2.替换字符串的子串
$new_tel2 = substr_replace($tel, '****', 3, 4);
var_dump($new_tel2);
//3.用正则
$new_tel3 = preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $tel);
var_dump($new_tel3);
?>
得到
string(11) "123****8910"
string(11) "123****8910"
string(11) "123****8910"
substr_replace函数
定义和用法
substr_replace() 函数把字符串的一部分替换为另一个字符串。
注释:如果 start 参数是负数且 length 小于或者等于 start,则 length 为 0。
注释:该函数是二进制安全的。
语法
substr_replace(string,replacement,start,length)
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
replacement | 必需。规定要插入的字符串。 |
start | 必需。规定在字符串的何处开始替换。正数 - 在字符串中的指定位置开始替换负数 - 在从字符串结尾的指定位置开始替换0 - 在字符串中的第一个字符处开始替换 |
length | 可选。规定要替换多少个字符。默认是与字符串长度相同。正数 - 被替换的字符串长度 负数 - 表示待替换的子字符串结尾处距离 string 末端的字符个数。0 - 插入而非替换 |
更多实例
例子 1:从第几位数开始替换
从字符串的第 6 个位置开始替换(把 “world” 替换成 “Shanghai”):
<?php
echo substr_replace("Hello world","Shanghai",6);
?>
例子 2:从末尾开始替换
从字符串结尾的第 5 个位置开始替换(把 “world” 替换成 “Shanghai”):
<?php
echo substr_replace("Hello world","Shanghai",-5);
?>
例子 3:插入开头的位置
在 “world” 开头插入 “Hello”:
<?php
echo substr_replace("world","Hello ",0,0);
?>
例子 4:批量替换
一次性替换多个字符串。把每个字符串中的 “AAA” 替换成 “BBB”:
<?php
$replace = array("1: AAA","2: AAA","3: AAA");
echo implode("<br>",substr_replace($replace,'BBB',3,3));
?>