номер карты данных маски в php - PullRequest
0 голосов
/ 13 марта 2020

У меня есть некоторые данные, напоминающие следующее:

444444444444444

Я хочу добавить маску к данным, чтобы она выглядела следующим образом:

44.444.444.4-444.444

Я пытался использовать:

$x_data = preg_replace('~.{3}\K(?!$)~', '.', $x_data);

Что меня достало:

444.444.444.444.444

Как мне изменить мой preg_replace, чтобы получить точный вывод, который я ищу?

1 Ответ

3 голосов
/ 13 марта 2020

Можно использовать групповой подход захвата, а затем подключить подкомпоненты в соответствии с ожидаемым форматом.

$x_data = "444444444444444";
echo $x_data . "\n";
$x_data = preg_replace('/^(\d{2})(\d{3})(\d{3})(\d)(\d{3})(\d{3})$/',
                       '$1.$2.$3.$4-$5.$6',
                       $x_data);
echo $x_data;

Это напечатает:

444444444444444
44.444.444.4-444.444
...