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

PHP中如何对整数或字符串进行逗号、短横线分隔格式化

解决方案

场景1:纯数字千分位分隔(对应示例1需求)

直接使用PHP内置的number_format()函数即可实现,支持快速生成逗号分隔的千分位格式,需要短横线的话做一次字符替换即可:

$input = 123456789;
// 逗号分隔输出
echo number_format($input); // 123,456,789
// 短横线分隔输出
echo str_replace(',', '-', number_format($input)); // 123-456-789

注意:该方法会自动忽略前导零,不适用示例2的带前导零字符串场景

场景2:带前导零的自定义分段(对应示例2需求)

你示例2的分段规则是固定的「3位+4位+3位」,写一个自定义函数实现即可,支持自定义分隔符,也可以兼容示例1的9位数字场景:

/**
 * 自定义数字字符串分隔格式化
 * @param string $input 输入的数字字符串
 * @param string $delimiter 分隔符,默认逗号
 * @return string 格式化后的字符串
 */
function customNumberFormat(string $input, string $delimiter = ','): string
{
    $len = strlen($input);
    // 适配10位字符串 3-4-3 分段
    if ($len === 10) {
        return vsprintf("%s{$delimiter}%s{$delimiter}%s", [
            substr($input, 0, 3),
            substr($input, 3, 4),
            substr($input, 7, 3)
        ]);
    }
    // 适配9位字符串 3-3-3 分段
    if ($len === 9) {
        return vsprintf("%s{$delimiter}%s{$delimiter}%s", [
            substr($input, 0, 3),
            substr($input, 3, 3),
            substr($input, 6, 3)
        ]);
    }
    // 其他长度可自行扩展规则,默认返回原内容
    return $input;
}

测试用例:

// 示例1测试
echo customNumberFormat('123456789'); // 123,456,789
echo customNumberFormat('123456789', '-'); // 123-456-789

// 示例2测试
echo customNumberFormat('0123456789'); // 012,3456,789
echo customNumberFormat('0123456789', '-'); // 012-3456-789

扩展说明

如果后续需要调整分段规则,只需要修改对应长度的截取和拼接逻辑即可,输入为整数类型时转成字符串传入即可保留前导零。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:54:03