Как добавить пробел между каждой последовательностью из четырех символов (например, номер кредитной карты)?

Как разбить эту строку:

56A19E6D77828

в такой формат:

56A1 9E6D 7782 8

Есть ли встроенные функции PHP, созданные для этого?

0

Решение

Ты можешь использовать str_split ()

$card = "56A19E6D77828";
echo join(" ", str_split($card, 4));

Выходы:

56A1 9E6D 7782 8
5

Другие решения

Для вашего примера ввода эта задача может быть выполнена с одним вызовом функции а также без создания временного массива.

$string = '56A19E6D77828';
var_export(preg_replace('~.{4}\K~', ' ', $string));  // '56A1 9E6D 7782 8'

Если вам нужно быть осторожным, чтобы не добавить дополнительный завершающий пробел, когда длина строки в четыре раза, просто убедитесь, что вы не достигли конца привязки строки.

$string = '56A19E6D77828333';
var_export(preg_replace('~.{4}\K(?!$)~', ' ', $string));  // '56A1 9E6D 7782 8333'

Демо-ссылка

Шаблон прост:

  1. соответствовать любым четырем символам (.{4})
  2. забыть совпадающие символы, но сохранить позицию (\K)
  3. проверьте, что конец строки не был достигнут ((?!$)
  4. добавить пробел в позицию в строке

Никаких взрывов строк или массивов, просто прямое манипулирование строками.

0

По вопросам рекламы [email protected]