PHP - 在字符串中间添加字符(从末尾开始)

标签 php string string-formatting character phone-number

如何在字符串中间添加字符?

我正在尝试将一个美国号码(例如 2121231234)格式化为带有破折号的号码,如下所示:212-123-1234。

我事先不知道这串数字有多长,
它可能是 12121231234,甚至可能是 0012121231234,
在这种情况下,我希望它分别变成 1212-123-1234 和 001212-123-1234。

到目前为止,这是我想出的:

$phone_number = '2121231234';
$phone_number = str_split($phone_number); // [2,1,2,1,2,3,1,2,3,4]
$phone_number = array_reverse($phone_number); // [4,3,2,1,3,2,1,2,1,2]

array_splice($phone_number, 4, 0, '-'); // [4,3,2,1,-,3,2,1,2,1,2]
array_splice($phone_number, 8, 0, '-'); // [4,3,2,1,-,3,2,1,-,2,1,2]

$phone_number = array_reverse($phone_number); // [2,1,2,-,1,2,3,-,1,2,3,4]
$phone_number = implode($phone_number); // "212-123-1234"

这可行,但似乎无法完成如此简单的任务。

我错过了什么?

最佳答案

试试 regular expressions :

echo preg_replace('/^(.*?)(.{3})(.{4})$/', '$1-$2-$3', $telnum);

关于PHP - 在字符串中间添加字符(从末尾开始),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040367/

相关文章:

wpf - 日期字符串格式绑定(bind)不起作用

php - ON DUPLICATE KEY 创建新记录

c++ - 我不断收到 'std::invalid_argument' what() : stoi exception thrown for seemingly no reason?

Python 2.7编辑一串字符

java - 是否可以在带参数的 strings.xml 格式字符串中有 %n 换行符?

python - 在 python 输出中居中多行文本

php - 如何使用 findOrfail 删除具有多个或不同 ID 列的行。拉维尔

php - 如何修复PHP中的“ header 已发送”错误

php - 在 PHP 中格式化 DateTime 列

xcode - 在 Swift 中将字符串转换为 double 值 (Xcode v 7.0.1)