Добавить разделители к номеру телефона

Мне нужно включить этот номер телефона:

5555555555

в эту строку с разделителями:

"555.555.5555"

Вот мой код:

$phone = 5555555555;
$phoneArray = explode(2, $phone);
print_r($phoneArray);

и это возвращает это:

Array ( [0] => 555 [1] => [2] => 55555 )

Что я делаю неправильно?

3 ответа

Решение

Есть много способов сделать это, и RegEx не требуется, но вот хороший и простой с RegEx:

$phone = '5555555555';
echo preg_replace('/(\d{3})(\d{3})(\d{4})/', "$1.$2.$3", $phone);

ура

Вам нужно что-то вроде этого:

$number = '123456789';
$segments = array();

$segments[] = substr($number, 0, 3);
$segments[] = substr($number, 3, 3);
$segments[] = substr($number, 6, 4);

$number = implode('.', $segments); // Comes out to 123.456.7890

Обратите внимание, что сначала вы захотите выполнить некоторую проверку формата. Вам нужно будет убедиться, что они действительно ввели 10-значный номер без разделительных символов.

Вы, вероятно, не хотите использовать Explode, так как у вас нет известного разделителя в строке, чтобы вызвать разделение. Вы можете использовать str_split($phone,3), который даст вам 3 элемента массива из 3 и 4 из 1. Сохраните первые два и объедините последние два вместе в ваш 3-й элемент массива:

$phone = 5555555555;
$phoneArray = str_split($phone,3);
$phoneArray[2] .= phoneArray[3];

print_r($phoneArray);

Надеюсь, это поможет.

Другие вопросы по тегам