PHP - добавление символов в середине строки (начиная с конца) - PullRequest
5 голосов
/ 18 мая 2011

Как вы добавляете символы в середине строки?

Я пытаюсь отформатировать номер США, например 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"

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

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

Ответы [ 3 ]

7 голосов
/ 18 мая 2011

Попробуйте с регулярными выражениями :

echo preg_replace('/^(.*?)(.{3})(.{4})$/', '$1-$2-$3', $telnum);
2 голосов
/ 18 мая 2011

Попробуйте

$phone_number = "2121231234";
$phone_number = substr($phone_number, 0, 3) . '-' . substr($phone_number, 3, 6) . ' - '.
substr($phone_number, 6, strlen($phone_number));
1 голос
/ 18 мая 2011

Вроде так

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