PHP - adding characters in middle of a string (starting from the end)

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,
это может быть 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"

Что работает, но похоже слишком много для выполнения такой простой задачи.

Что мне не хватает?

5
задан John Alt 18 May 2011 в 05:44
поделиться