首页 > 解决方案 > PHP - 格式化数字以匹配特定模板

问题描述

我有一个特定长度的整数(我知道它将有 14 位,不多也不少),例如:

98000011601815

我想将它格式化为一个字符串,所以它看起来像这样:

9800-0011-6018-15

我怎样才能正确地做到这一点?我知道我可以使用很多 substr() 来做到这一点,但我认为有一种我不熟悉的更优雅的方式。

标签: php

解决方案


使用 preg_replace

虽然输入是数字,但它将被视为字符串,所以这是“我如何格式化插入分隔符的字符串” - 一种简单的方法是使用preg_replace

$input = 98000011601815;

$output = preg_replace(
  '/(\d{4})(\d{4})(\d{4})(\d{2})/',
  '\1-\2-\3-\4',
  $input
);
# Output is "9800-0011-6018-15"

解释那里使用的正则表达式:

/       # Start of regex
(\d{4}) # exactly 4 digits (capturing group 1)
(\d{4}) # exactly 4 digits (capturing group 2)
(\d{4}) # exactly 4 digits (capturing group 3)
(\d{2}) # exactly 2 digits (capturing group 4)
/       # End of regex

推荐阅读