如何用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
相关产品推荐
相关产品推荐

