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

如何在PHP中用str_replace将999999999格式化为带短横线的字符串?

在PHP中用str_replace实现指定格式的数字分隔

嘿,这个问题挺有意思的——因为你的原字符串全是相同的9,直接用str_replace替换单个字符肯定行不通(会把所有数字都乱改),不过我们可以换个思路,结合字符串截取和str_replace的模板替换来精准实现需求:

实现步骤

  • 先把原9位字符串拆分成对应格式需要的4个片段:前2位、第3位、第4位、最后5位
  • 定义一个格式模板,用占位符标记每个片段的位置
  • 用str_replace把占位符替换成对应的片段

代码示例

$original = '999999999';

// 拆分原字符串为对应片段
$part1 = substr($original, 0, 2);  // 取前2位:"99"
$part2 = substr($original, 2, 1);  // 取第3位:"9"
$part3 = substr($original, 3, 1);  // 取第4位:"9"
$part4 = substr($original, 4, 5);  // 取最后5位:"99999"

// 用str_replace替换模板中的占位符
$formatted = str_replace(
    ['{p1}', '{p2}', '{p3}', '{p4}'],
    [$part1, $part2, $part3, $part4],
    '{p1}-{p2}-{p3}-{p4}'
);

echo $formatted; // 输出:99-9-9-99999

补充说明

如果你的输入字符串长度固定为9位,其实也可以用一行代码简化(本质还是拆分+替换):

$formatted = str_replace(
    ['A', 'B', 'C', 'D'],
    [substr('999999999',0,2), substr('999999999',2,1), substr('999999999',3,1), substr('999999999',4,5)],
    'A-B-C-D'
);

不过要注意:如果输入字符串长度不固定,你需要先做长度校验,避免截取出错哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:13:50