php - PHP - 格式化数字以匹配特定模板
问题描述
我有一个特定长度的整数(我知道它将有 14 位,不多也不少),例如:
98000011601815
我想将它格式化为一个字符串,所以它看起来像这样:
9800-0011-6018-15
我怎样才能正确地做到这一点?我知道我可以使用很多 substr() 来做到这一点,但我认为有一种我不熟悉的更优雅的方式。
解决方案
使用 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
推荐阅读
- java - 如何查看 Java 编译器的内容
- r - 如何使用 dtw 距离函数自定义 proxy::dist 返回的内容
- node.js - 如何使用nodejs拦截来自浏览器的http请求?
- html - SVG:iframe 在 foreignObject 之外渲染
- c# - 我应该抛出异常还是返回false?
- laravel - Laravel 从选项卡提交表单并返回视图中的同一选项卡
- postgresql - 对于具有值的列,左连接返回 null
- unit-testing - Spock 在 Groovy 中测试 ResultSet
- javascript - 在 reactjs 中有条件地将道具传递给组件
- ruby-on-rails - Ruby 哈希值可以在其值中包含一个数组吗?