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

发布于 2024-11-08 07:10:27 字数 738 浏览 0 评论 0原文

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

我正在尝试将美国号码(例如 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"

可行,但对于完成如此简单的任务来说似乎太多了。

我缺少什么?

How do you add characters in middle of a string?

I'm trying to format a US number such as 2121231234 into one with dashes like so: 212-123-1234.

I don't know in advance how long the string of numbers will be,
it might be 12121231234, it might even be 0012121231234,
in which case I want it to turn into 1212-123-1234, and 001212-123-1234, respectively.

So far, this is what I've come up with:

$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"

Which works, but seems to be far too much to accomplish such a simple task.

What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

酷遇一生 2024-11-15 07:10:41

像这样

$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-7 , 0);
$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-4 , 0);

Like so

$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-7 , 0);
$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-4 , 0);
梦与时光遇 2024-11-15 07:10:40

尝试使用正则表达式

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

Try it with regular expressions:

echo preg_replace('/^(.*?)(.{3})(.{4})$/', '$1-$2-$3', $telnum);
因为看清所以看轻 2024-11-15 07:10:40

尝试一下

$phone_number = "2121231234";
$phone_number = substr($phone_number, 0, 3) . '-' . substr($phone_number, 3, 6) . ' - '.
substr($phone_number, 6, strlen($phone_number));

Try it

$phone_number = "2121231234";
$phone_number = substr($phone_number, 0, 3) . '-' . substr($phone_number, 3, 6) . ' - '.
substr($phone_number, 6, strlen($phone_number));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文