You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP将文本部分字符替换为符号隐藏?新手技术求助

嘿,作为PHP新手能想到这个需求真不错!我给你几个简单好懂的实现方法,都是新手也能快速上手的:

方法一:用substr()和str_repeat()组合(最直观)

这个方法思路特别清晰,就是先算出要保留的末尾字符长度,生成对应数量的星号,再把星号和保留的部分拼起来:

$originalStr = '0024009302';
$hideCount = 6; // 你要隐藏的字符数量

// 第一步:获取原字符串的总长度,算出要保留的末尾字符数
$totalLength = strlen($originalStr);
$keepLength = $totalLength - $hideCount;

// 第二步:生成和隐藏数量一样多的星号
$hiddenStars = str_repeat('*', $hideCount);

// 第三步:截取原字符串的末尾部分(用负数表示从末尾开始取)
$keepPart = substr($originalStr, -$keepLength);

// 第四步:把星号和保留部分拼接起来
$result = $hiddenStars . $keepPart;

echo $result; // 运行后会输出:******9302

方法二:用正则表达式替换(更简洁)

如果你想写得更紧凑一点,也可以用正则表达式直接替换开头的指定数量字符:

$originalStr = '0024009302';
$hideCount = 6;

// 正则匹配开头的$hideCount个任意字符,替换成对应数量的星号
$result = preg_replace('/^.{' . $hideCount . '}/', str_repeat('*', $hideCount), $originalStr);

echo $result; // 同样输出:******9302

额外小提醒:加个安全判断更稳妥

要是担心不小心设置的$hideCount超过了字符串总长度(比如原字符串只有8个字符,却要隐藏10个),可以加个判断避免出错:

$originalStr = '0024009302';
$hideCount = 6;

$totalLength = strlen($originalStr);

if ($hideCount >= $totalLength) {
    // 如果要隐藏的数量大于等于总长度,直接返回全星号
    $result = str_repeat('*', $totalLength);
} else {
    $keepLength = $totalLength - $hideCount;
    $hiddenStars = str_repeat('*', $hideCount);
    $keepPart = substr($originalStr, -$keepLength);
    $result = $hiddenStars . $keepPart;
}

echo $result;

这样不管输入什么合理或不合理的隐藏数量,代码都能正常工作啦~

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:42:17