怎么替换一个字符串中间的字符

时间:2021-01-30 15:00:41
怎么替换一个字符串中间的字符?
比如: fdsfdsfdsjkww
替换成:f**********w
比如: 扣分金锡民
替换成:扣***民
比如: 扣分金锡民s
替换成:扣****s
比如: tt扣分金锡民s
替换成:t*****s

10 个解决方案

#1




<?php
$str ='tt扣分金锡民s';
function hide_repalce($str, $code='utf-8') {
mb_internal_encoding($code);
$len = mb_strlen($str);
return mb_substr($str, 0, 1) . str_repeat('*', $len - 2) . mb_substr($str, $len - 1, 1);

}
echo hide_repalce($str);

#2


Replace ( string1, start, string2,n,m )

#3


引用 1 楼 hnxxwyq 的回复:


<?php
$str ='tt扣分金锡民s';
function hide_repalce($str, $code='utf-8') {
mb_internal_encoding($code);
$len = mb_strlen($str);
return mb_substr($str, 0, 1) . str_repeat('*', $len - 2) . mb_substr($str, $len - 1, 1);

}
echo hide_repalce($str);



有乱码,看到吗?

#4


乱码要看你的编码是什么 设置正确的编码

#5


$string='fdsfdsfdsjkww';
echo substr($string,0,1).'*****'.substr($string,$sLeng-1,1);

#6


引用 3 楼 meiyoudao 的回复:
Quote: 引用 1 楼 hnxxwyq 的回复:



<?php
$str ='tt扣分金锡民s';
function hide_repalce($str, $code='utf-8') {
mb_internal_encoding($code);
$len = mb_strlen($str);
return mb_substr($str, 0, 1) . str_repeat('*', $len - 2) . mb_substr($str, $len - 1, 1);

}
echo hide_repalce($str);



有乱码,看到吗?


如果是使用utf8-编码,源文件的编码、输出显示的编码都要用utf-8

#7


简单点的
$string='fdsfdsfdsjkww';
echo substr_replace($string, str_repeat('*',strlen($string)-2), 1, strlen($string)-2);

#8


注意长度问题,在不同编码下,中文和英文的字节会不一样的,多以长度要计算对了,不然会出现乱码

#9


$string='fdsfdsfdsjkww';
echo substr_replace($string, str_repeat('*',strlen($string)-2), 1, strlen($string)-2);

这个相对比较简单

substr_replace — 替换字符串的子串

string
输入字符串。

replacement
替换字符串。

start
如果 start 为正数,替换将从 string 的 start 位置开始。

如果 start 为负数,替换将从 string 的倒数第 start 个位置开始。

length
如果设定了这个参数并且为正数,表示 string 中被替换的子字符串的长度。如果设定为负数,它表示待替换的子字符串结尾处距离 string 末端的字符个数。如果没有提供此参数,那么它默认为 strlen( string ) (字符串的长度)。当然,如果 length 为 0,那么这个函数的功能为将 replacement 插入到 string 的 start 位置处

#10


该回复于2013-06-05 10:40:02被管理员删除

#1




<?php
$str ='tt扣分金锡民s';
function hide_repalce($str, $code='utf-8') {
mb_internal_encoding($code);
$len = mb_strlen($str);
return mb_substr($str, 0, 1) . str_repeat('*', $len - 2) . mb_substr($str, $len - 1, 1);

}
echo hide_repalce($str);

#2


Replace ( string1, start, string2,n,m )

#3


引用 1 楼 hnxxwyq 的回复:


<?php
$str ='tt扣分金锡民s';
function hide_repalce($str, $code='utf-8') {
mb_internal_encoding($code);
$len = mb_strlen($str);
return mb_substr($str, 0, 1) . str_repeat('*', $len - 2) . mb_substr($str, $len - 1, 1);

}
echo hide_repalce($str);



有乱码,看到吗?

#4


乱码要看你的编码是什么 设置正确的编码

#5


$string='fdsfdsfdsjkww';
echo substr($string,0,1).'*****'.substr($string,$sLeng-1,1);

#6


引用 3 楼 meiyoudao 的回复:
Quote: 引用 1 楼 hnxxwyq 的回复:



<?php
$str ='tt扣分金锡民s';
function hide_repalce($str, $code='utf-8') {
mb_internal_encoding($code);
$len = mb_strlen($str);
return mb_substr($str, 0, 1) . str_repeat('*', $len - 2) . mb_substr($str, $len - 1, 1);

}
echo hide_repalce($str);



有乱码,看到吗?


如果是使用utf8-编码,源文件的编码、输出显示的编码都要用utf-8

#7


简单点的
$string='fdsfdsfdsjkww';
echo substr_replace($string, str_repeat('*',strlen($string)-2), 1, strlen($string)-2);

#8


注意长度问题,在不同编码下,中文和英文的字节会不一样的,多以长度要计算对了,不然会出现乱码

#9


$string='fdsfdsfdsjkww';
echo substr_replace($string, str_repeat('*',strlen($string)-2), 1, strlen($string)-2);

这个相对比较简单

substr_replace — 替换字符串的子串

string
输入字符串。

replacement
替换字符串。

start
如果 start 为正数,替换将从 string 的 start 位置开始。

如果 start 为负数,替换将从 string 的倒数第 start 个位置开始。

length
如果设定了这个参数并且为正数,表示 string 中被替换的子字符串的长度。如果设定为负数,它表示待替换的子字符串结尾处距离 string 末端的字符个数。如果没有提供此参数,那么它默认为 strlen( string ) (字符串的长度)。当然,如果 length 为 0,那么这个函数的功能为将 replacement 插入到 string 的 start 位置处

#10


该回复于2013-06-05 10:40:02被管理员删除